# JdbcTemplate 详解
# 一,JdbcTemplate (概念和准备)
- 什么是 JdbcTemplate (Template 译为模板)
- Sprint 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
- 准备工作
- 引入相关 jar 包,我们还需要导入连接数据库的相关 jar 包,比如:
druid,mysql-connector-java
- 引入相关 jar 包,我们还需要导入连接数据库的相关 jar 包,比如:
我们需要的是 spring-jdbc-5.0.0.RELEASE.jar
, 除了要导入这个 jar 包外,还需要导入一个 spring-tx-5.0.0.RELEASE.jar
(它 是 和事务相关的)
spring JDBC
Spring 框架对 JDBC 的简单封装,提供了一个 JDBCTemplate 对象简化 JDBC 的开发
- 步骤:
- 导入 jar 包
- 创建 JdbcTemplate 对象,依赖于数据源 DataSource
- JdbcTemplate template = new JdcbTemplate(ds);
调用 JdbcTemplate 的方法来完成 CRUD 的操作
update (): 执行 DML 语句,增,删,改语句
queryForMap (): 执行 DQL 查询结果将结果集封装为 map 集合
queryForList (): 执行 DQL 查询结果将结果集封装为 list 集合
- 将每一条记录封装为一个 Map 集合,再将 Map 集合装载到 List 集合中
query (): 执行 DQL 查询结果,将结果封装为 JavaBean 对象
queryForObject (): 执行 DQL 查询结果,将结果封装为对象
- 一般用于聚合函数的查询
案例:
增
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "insert into user values(?,?)"; | |
int update = jdbcTemplate.update(sql, null, "王五"); | |
if(update > 0){ | |
System.out.println("执行成功!"); | |
}else{ | |
System.out.println("执行失败!"); | |
} |
- 删
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "delete from user where id=?"; | |
int update = jdbcTemplate.update(sql, 1); | |
if(update > 0){ | |
System.out.println("执行成功!"); | |
}else{ | |
System.out.println("执行失败!"); | |
} |
- 改
public static void main(String[]args){ | |
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "update user set name='马牛逼' where id=?"; | |
int update = jdbcTemplate.update(sql, 2); | |
if(update > 0){ | |
System.out.println("执行成功!"); | |
}else{ | |
System.out.println("执行失败!"); | |
} | |
} |
DQL
- queryForMap 查询单行
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "select * from user where id = ?"; | |
Map<String, Object> map = jdbcTemplate.queryForMap(sql, 2); | |
System.out.println(map); |
- queryForList 查询多行
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "select * from user where id = ? or id = ?"; | |
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql, 2,3); | |
System.out.println(maps); |
- queryForObject 查询单行,返回对象 一般用于聚合函数的查询
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "select * from user where id = ?"; | |
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), 2); | |
System.out.println(user); | |
//=========================================================== | |
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "select count(id) from user"; | |
int i = jdbcTemplate.queryForObject(sql,int.class); | |
System.out.println(i); |
- query 查询多行,返回 JavaBean 对象并封装到 List 集合中
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource()); | |
String sql = "select * from user"; | |
List<User> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<User>(User.class)); | |
System.out.println(list); |