Spring JDBC—JDBCTemplate基础入门
简介
Spring JDBC 是Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象用于简化对JDBC的开发。
使用步骤
-
导入jar包
-
创建JdbcTemplate对象
private JdbcTemplate temp = new JdbcTemplate(DruidUtils.getDataSource());
- 调用JdbcTemplate的方法来完成CRUD的操作
- update ():执行DML语句。增、删、改语句
- 示例:
/**
* 修改id为1记录的phone为1111111
*/
@Test
public void test1() {
String sqlString = "update actor set phone = '1111111' where id = 1";//定义sql语句
int count = temp.update(sqlString);//调用Template的方法
System.out.println(count);//1
}
/**
* 添加一条记录
*/
@Test
public void test() {
String sql2 = "insert into actor (id,name,sex) value(?,?,?)";
int count = temp.update(sql2,9,"嘿嘿","男");
System.out.println(count);//1
}
/**
* 删除一条记录
*/
@Test
public void test3 () {
String sql3 = "delete from actor where id = ?";
int count = temp.update(sql3,8);
System.out.print(count);//1
}';
- queryForMap():查询结果,并将结果封装成Map集合,列名作为key,值作为value,并且查询结果集长度只能为1;
- 示例 :
/**
* 查询id为1的记录,将其封装为Map集合,查询长度只能是一
*/
@Test
public void test4() {
String sql4= "select * from actor where id = ?";
Map<String, Object> map = temp.queryForMap(sql4,1);
System.out.println(map);//{id=1, name=张三, sex=男, borndate=2001-02-07 00:00:00.0, phone=1111111}
}
- queryForList():查询结果,并将结果集封装为list集合,将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
- 示例:
/**
* 查询所有记录封装成List对象
*/
@Test
public void test5() {
String sql5= "select * from actor";
List<Map<String,Object>> list =temp.queryForList(sql5);//list里装载的是一个一个Map
for(Map<String,Object> stringObjectMap : list) {
System.out.print(stringObjectMap);
}//遍历list
//{id=1, name=张三, sex=男, borndate=2000-05-07 00:00:00.0, phone=1111111}{id=2, name=张二, sex=女, borndate=2001-01-08 00:00:00.0, phone=12345678}{id=3, name=张一, sex=女, borndate=2001-01-08 00:00:00.0, phone=110}
}
- query():查询结果,将结果封装为JavaBean对象,query的参数RowMapper和BeanPropertyRowMapper,一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装,RowMapper需要我们自己实现封装;
+ 示例:
/**
* 查询所有记录封装成对象再装入到list集合
* @param <Actor>
*/
@Test
public void test6() {
String sql6= "select * from actor";
List<Actor> list = temp.query(sql6,new BeanPropertyRowMapper<Actor>(Actor.class));
//使用BeanPropertyRowMapper需要将自己定义的实体类定义为基本数据类型
for (Actor actor :list) {
System.out.println(actor);
}
//Actor [id=1, name=张三, sex=男, borndate=2000-05-07 00:00:00.0, phone=1111111]
//Actor [id=2, name=二, sex=女, borndate=2001-01-08 00:00:00.0, phone=12345678]
//Actor [id=3, name=一, sex=女, borndate=2001-01-08 00:00:00.0, phone=110]
}
// public void test6() {
// String sql6= "select * from actor";
// List<Actor> list = temp.query(sql6, new RowMapper<Actor>() {
// 使用RowMapper不需要将自己定义的实体类定义为基本数据类型
// @Override
// public Actor mapRow(ResultSet rs, int i) throws SQLException{
// Actor actor = new Actor();
//
// int id = rs.getInt("id");
// String name = rs.getString("name");
// String sex = rs.getString("sex");
// Date borndate = rs.getDate("borndate");
// String phone = rs.getNString("phone");
//
// actor.setId(id);
// actor.setName(name);
// actor.setSex(sex);
// actor.setBorndate(borndate);
// actor.setPhone(phone);
//
// return actor ;
// }
// });
//
// for (Actor actor :list) {
// System.out.println(actor);
// }
// }
- queryForObject:查询结果,将结果封装为对象,一般用于聚合函数的查询
+ 示例
/**
* 查询总的记录数
* @param <Actor>
*/
@Test
public void test7() {
String sql7 = "select count(id) from actor";
Long totalLong = temp.queryForObject(sql7, Long.class);
System.out.print(totalLong);//3
}