Spring JDBC 1.update():执行DML语句。增、删、改语句
2.queryForMap(): 3.queryForList(): 4.query(): 最常用 5.queryForObject
Spring JDBC
1.Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
* 步骤: 1. 导入jar包 2. 创建JdbcTemplate对象。依赖于数据源DataSource
2. 创建JdbcTemplate对象。 依赖于数据源 DataSource 就是数据库链接池
* JdbcTemplate template = new JdbcTemplate(ds);
3. 调用JdbcTemplate的方法来完成CRUD的操作
1.update():执行DML语句。增、删、改语句
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); 工具类的获取池子方法
String sql = "update wyc set name = 'xqy' where id = ?";
int count = template.update(sql, 1); 参数一一对应
System.out.println(count); 1 不用关心释放资源
@Test
public void change (){
String sql = "update wyc set salary =? where id = 7";
int count = template.update(sql, 10000);
System.out.println(count); //1}
@Test
public void remove(){
String sql = "delete from wyc where id =?";
int coun = template.update(sql, 9);
System.out.println(coun);}
2.queryForMap():
查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
注意:这个方法查询的结果集长度只能是1
@Test 将查询字段放入 map 集合中 只能是一个
public void select_1(){
String sql= "select * from wyc where id = ?";
Map<String, Object> maplist = template.queryForMap(sql, 2);
System.out.println(maplist);}
{id=2, name=xqy, age=17, local=congqing, salary=4000.0, join_time=2019-09-13 02:09:25.0}
3.queryForList():
查询结果将结果集封装为list集合 list集合的泛型 为 map 集合 就是列表嵌套集合
注意:1.将每一条记录封装为一个Map集合,再将Map集合装载到List集合中 2.注意为null的数据 需要使用包装类型
@Test 将查询每一个字段放入map集合中 再放入list集合中
public void select_list(){
String sql ="select * from wyc";
List<Map<String, Object>> mapList = template.queryForList(sql);
for (Map<String, Object> stringObjectMap : mapList) {
System.out.println(stringObjectMap);}}
{id=6, name=aaa, age=25, local=bbb, salary=65040.0, join_time=2019-09-13 17:27:12.0}
{id=7, name=wyc, age=25, local=bbb, salary=10000.0, join_time=2019-09-13 17:35:57.0}
{id=8, name=bbb, age=100, local=Beijing, salary=9999.0, join_time=null}
4.query(): 最常用
1.查询结果,将结果封装为JavaBean对象 需要指定类型 重写get set tostring 方法
1.query的参数:RowMapper 需要手封装
public void select_list_table(){ 将字段封装在 自定义类型 再放入 list集合中
String sql ="select * from wyc";
List<table> tables = template.query(sql, new RowMapper<table>() {
@Override
public table mapRow(ResultSet res, int i) throws SQLException {
table table = new table();
int id = res.getInt("id");
String name = res.getString("name");
int age = res.getInt("age");
table.setId(id);
table.setName(name);
table.setAge(age);
return table;}});
for (table table : tables) {
System.out.println(table);}}
table{id=8, name='bbb', age=100, local='Beijing', salary=9999.0, join_time=null}....
2.一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class) 非常方便
@Test 将字段封装在 自定义类型 再放入 list集合中
public void select_list_table2(){
String sql = "select * from wyc";
List<table> lists = template.query(sql, new BeanPropertyRowMapper<table>(table.class));
for (table list : lists) {
System.out.println(list);
}}
table{id=8, name='bbb', age=100, local='Beijing', salary=9999.0, join_time=null}....
5.queryForObject
查询结果,将结果封装为对象 一般用于聚合函数的查询
@Test 查询总得字段数
public void count(){
String sql ="select count(id) from wyc";
Integer integer = template.queryForObject(sql, int.class);
System.out.println(integer);} 8