黑马程序员技术交流社区
标题:
[成都校区]Druid和JDBCTemplate的联合使用
[打印本页]
作者:
zhanglei_
时间:
2019-5-9 13:23
标题:
[成都校区]Druid和JDBCTemplate的联合使用
1. Spring框架对JDBC进行了简单的封装, 通过new JDBCTemplate(DataSource ds)构造方法来传入数据源DataSource,获得JDBCTemplate对象,再通过JDBCTemplate对象的具体方法来实现对数据库的CURD操作。这里的DataSource 即为数据库连接池,可以通过Druid数据库连接技术来获得, 一般在工具类中来完成此功能,代码如下:
public class
JDBCUtils {
// 定义成员变量DataSoure
private static
DataSource
ds
;
// 静态代码初始化连接池
static
{
try
{ // 获取配置文件的信息
Properties prop =
new
Properties();
InputStream is = JDBCUtils.
class
.getClassLoader().getResourceAsStream(
"druid.properties"
);
prop.load(is);
// 获取Datasource
ds
= DruidDataSourceFactory.
createDataSource
(prop);
}
catch
(IOException e) {
e.printStackTrace();
}
catch
(Exception e) {
e.printStackTrace();
}
}
// 定义获取连接的方法
public static
Connection getConnection()
throws
SQLException {
return
ds
.getConnection();
}
// 返回连接池
public static
DataSource getDataSource(){
return
ds
;
}
//释放资源方法 针对数据库查询操作
public static void
close(ResultSet rs, Statement statement, Connection conn){
if
(rs!=
null
){
try
{
rs.close();
}
catch
(SQLException e) {
e.printStackTrace();
}
}
if
(statement!=
null
){
try
{
statement.close();
}
catch
(SQLException e) {
e.printStackTrace();
}
}
if
(conn!=
null
){
try
{
conn.close();
}
catch
(SQLException e) {
e.printStackTrace();
}
}
}
//释放资源的重载方法 针对数据库增删改操作
public static void
close(Statement statement, Connection conn){
close
(
null
, statement, conn);
}
}2. 在得到JDBCTemplate对象之后,要对数据库进行增删改查的操作,实现代码如下:
public class
JdbcTemplateDemo01 {
private
JdbcTemplate
template
=
new
JdbcTemplate(JDBCUtils.
getDataSource
());
// 修改数据
@Test
public void
test1(){
template
.update(
"update user set
username
= ? where
id
= ?"
,
"zhangsang"
,
1
);
}
// 添加数据
@Test
public void
test2(){
template
.update(
"insert into user values (?, ?, ?)"
,
null
,
"yang"
,
"zdlaslsy"
);
}
// 删除数据
@Test
public void
test3(){
template
.update(
""
);
}
// 查询单条数据,封装为map
@Test
public void
test4(){
String sql =
"select
*
from emp where
id
= ?"
;
Map<String, Object> map =
template
.queryForMap(sql,
1001
);
System.
out
.println(map);
}
// 查询多条数据,封装为List
@Test
public void
test5(){
String sql =
"select
*
from emp "
;
List<Map<String, Object>> list =
template
.queryForList(sql);
System.
out
.println(list);
}
// 查询所有记录,将其封装为Emp对象的List的集合
@Test
public void
test6(){
String sql =
"select
*
from emp"
;
List<Emp> list =
template
.query(sql,
new
BeanPropertyRowMapper<Emp>(Emp.
class
));
for
(Emp emp:list){
System.
out
.println(emp);
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2