Spring 的 jdbcTemplate 操作
1、Spring框架是一站式框架
(1)针对 JavaEE 三层,每一层都有解决技术
(2)在 dao 层,使用 jdbcTemplate
2、Spring对不同的持久化层的技术都进行了封装
(1)jdcbTemplate 对 jdbc 进行了封装
3、jdbcTemplate 使用和 dbutils (Apache公司)使用很相似,都是对数据库进行 crud 的操作
1、增加
(1)导入 jdbcTemplate 使用的 jar 包(Maven项目)————别忘了数据库驱动!!!
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.4</version>
</dependency>
(2)创建对象,设置数据库的信息
(3)创建 jdbcTemplate 对象,设置数据源
(4)调用 jdbcTemplate 对象里面的方法实现操作
2、修改
3、删除
4、查询
(1)使用 jdbcTemplate 实现查询操作——对比DButils
(2)查询具体的实现
查询返回一个值(总条数之类)
调用的是 queryForObject(String sql, Class<T> requiredType) 方法。
第一个参数是sql语句,第二个参数是返回值类型的 class 对象
查询返回对象
原始的JDBC的方式实现
// 2.jdbc实现代码
@Test
public void testJDBC() {
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建连接
conn = DriverManager.getConnection("jdbc:mysql:///lianxi", "root", "root");
// 编写sql语句
String sql = "select * from user where username=?";
// 预编译sql
psmt = conn.prepareStatement(sql);
// 设置参数值
psmt.setString(1, "jack");
// 执行sql
rs = psmt.executeQuery();
// 遍历结果集
while(rs.next()) {
// 得到返回结果值
String username = rs.getString("username");
String password = rs.getString("password");
// 放到user对象里
User user = new User();
user.setPassword(password);
user.setUsername(username);
System.out.println(user);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
rs.close();
psmt.close();
conn.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
jdbcTemplate 中我们使用 queryForObject(String sql, RowMapper<T> rowMapper, Object... args) 方法
参数:
(1)SQL语句
(2) RowMapper 接口,类似于 DBUtils 里面 ResultSetHandler
(3)可变参数
我们自己实现RowMapper接口,并进行数据封装
查询返回 list 集合
我们使用 jdbcTemplate 中的 query(String sql, RowMapper<T> rowMapper, Object... args) 方法
参数:
(1)sql语句
(2)RowMapper接口,自己写类实现数据封装(我们还可以用上面自己实现的MyRowMapper)
(3)可变参数(在这里我们sql语句中没有占位符,所以我们可变参数可以不传)