- Spring JDBC是:Spring框架对JDBC的简单封装
操作步骤:
第一步:还是我们熟悉的导入jar包
第二步:创建jdbcTemplate对象,依赖于数据源DataSource对象(也就是说还是先要创建DataSource对象)。[Template是 模板 的意思]
//还是先要使用DruidDataSourceFactory类的 createDataSource()方法获取DataSource对象
DataSource ds =DruidDataSourceFactory.createDataSource();
//再传入DataSource进jdbcTemplate的构造器中,创建jdbcTemplate对象
jdbcTemplate template = new jdbcTemplate(ds);
第三步:写sql
String sql = ".insert into employee(ename,money)values(?,?)"
第四步:执行sql
是的,您没有看错。
使用Spring框架的jdbcTemplate对象,什么创建数据库连接对象。获取执行sql语句的对象。等等都没有了甚至连close方法你都不需要再调用了,就是这么优秀。
-
这里涉及到了DML语言和DQL语句
1.如果是DML语言,直接调用jdbcTemplate对象里边的Uptada()方法执行sql
template.uptada(sql,"给第一个?赋值",“第二个?赋值”,“给第三个?赋值”.......)
2.如果是DQL语言,就有点麻烦了。
-
要介绍jdbcTemplate对象里边的成员方法了
-
1.queryForMap():将查询的结果封装为一个Map集合。但是只能封装一行记录,也即是说无论你查出多少行都只能封装一行数据。
-
//2.写sql String sql = "select * from employee where money = ? "; //3.执行sql 并 将查询的结果封装为Map集合 Map<String, Object> som = template.queryForMap(sql, 1000);`
-
2.queryForList():将查询的结果集封装为一个以Map集合为单位的List集合。他的里边都是一个个Map集合.
-
//2.写sql String sql = "select * from employee "; //3.执行sql 并 将查询的结果封装为以Map集合为单位的List集合 List<Map<String, Object>> list = template.queryForList(sql);`
-
3.query():可以封装为一个以 自定义对象 为单位的List集合
//2.写sql
String sql = "select * from employee ";
//3.执行sql 并 将查询的结果封装为以 自定义对象 为单位的List集合
List<Emp> list = template.query(sql, new RowMapper<Emp>() {
/**
*实现RowMapper接口的mapRow方法
* @param rs 结果集对象
* @param i
* @return 返回Emp对象
* @throws SQLException
*/
@Override
public Emp mapRow(ResultSet rs, int i) throws SQLException {
//ResultSet结果集对象已经给我了,所以
String ename = rs.getString("ename");
int money = rs.getInt("money");
//创建Emp对象
Emp emp = new Emp();
emp.setEname(ename);
emp.setMoney(money);
return emp;
}
});
第三个成员方法query()的优化【用的最多】。
上边是我自己纯手写实现RowMapper接口中的mapRow方法。而下边就是BeanPropertyRowMapper类帮我实现RowMapper的mapRow方法,能理解意思把~
//2.写sql
String sql = "select * from employee ";
//3.执行sql 并 将查询的结果封装为List集合
List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class)); //参数需要传class文件
//又节省了好多代码。BeanPropertyRowMapper类实现了RowMapper
第四个成员方法 queryForObject方法 ,用于聚合函数
扫描二维码关注公众号,回复:
10877327 查看本文章