JDBCTemplate
Posted nyankosensei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBCTemplate相关的知识,希望对你有一定的参考价值。
1. 介绍
JDBCTemplate是Spring框架提供的对JDBC封装对象,目的是简化JDBC开发,是因为传统JDBC代码有着大量的重复。
2. 加载jar包
如果是Maven/Gradle项目则从Maven中央仓库配置,如果是要手动导入,则从FTP下载。
(1) Apache Commons Logging:http://repo1.maven.org/maven2/commons-logging/commons-logging/
<!-- Maven -->
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
// Gradle
// https://mvnrepository.com/artifact/commons-logging/commons-logging
compile group: ‘commons-logging‘, name: ‘commons-logging‘, version: ‘1.2‘
(2) Spring Beans:http://repo1.maven.org/maven2/org/springframework/spring-beans/
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
// https://mvnrepository.com/artifact/org.springframework/spring-beans
compile group: ‘org.springframework‘, name: ‘spring-beans‘, version: ‘5.1.9.RELEASE‘
(3) Spring Core:http://repo1.maven.org/maven2/org/springframework/spring-core/
(4) Spring JDBC:http://repo1.maven.org/maven2/org/springframework/spring-jdbc/
(5) Spring Transaction:http://repo1.maven.org/maven2/org/springframework/spring-tx/
springframework的这几个包的区别就是<artifactId>标签不同。
3. 使用JDBCTemplate
配合JDBCUtils,JDBCTemplate提供了多种功能的封装,极大的简化了语句,只要关心SQL语句即可。
(1) 创建JDBCTemplate对象
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
可以将创建对象语句做成员变量,使用private修饰,这样类中每一个业务就不需要重复创建对象,可以直接使用template了。
(2) 使用JdbcTemplate提供的方法
1) upadate(SQL语句, 参数列表):执行DML语句,执行添、删、改语句。返回影响行数。
tring sql = "UPDATE user SET age = ? WHERE id = ?";
int count = template.update(sql, 60, 1);
2) queryForMap(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回被封装到Map集合的数据集。
/* 注意,这个方法将列名和值作为键值对封装为Map集合
只能查询唯一一条结果集,如果是多条结果一定不能使用这个方法 */
String sql = "SELECT * FROM user WHERE id = ?";
Map<String,Object> map = template.queryForMap(sql, 1);
System.out.println(map);
3) queryForList(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回被封装到List集合的数据集。
/* 用这个方法可以打印多条封装成Map集合的结果集
其实就是将每一条记录封装成一个Map集合,然后将Map集合装到List集合中 */
String sql = "SELECT * FROM user WHERE id = ? OR id = ?";
List<Map<String,Object>> list = template.queryForList(sql, 1, 2);
for(Map<String,Object> stirngObjectMap : list)
System.out.println(stirngObjectMap);
4) query(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回的数据集封装到JavaBean对象。
/* 使用提供的BeanPropertyRowMapper方法,完成数据到JavaBean的自动封装
注意:domain类中的数据类型一定要是引用数据类型,否则可能会出错 */
String sql = "SELECT * FROM user";
List<类型> list = template.query(sql,
new BeanPropertyRowMapper<类型>(类型.class));
for(类型 user : list)
System.out.println(user);
/* domain 类 */
public class User
private Integer id;
public Integer getId() return id;
public void setId(Integer id) this.id = id;
@Override
public String toString()
return "User" + "id=" + id + ‘‘;
5) queryForObject(SQL语句, 参数列表):执行DQL语句,执行查询语句。返回的数据集封装为对象。
/* queryForObject方法一般都是执行聚合函数的方法 */
String sql = "SELECT COUNT(id) from user";
Long total = template.queryForObject(sql, Long.class);
System.out.println(total);
以上是关于JDBCTemplate的主要内容,如果未能解决你的问题,请参考以下文章