一、JdbcTemplate介绍
JdbcTemplate 是 Spring JDBC 框架的核心,JDBC 模板的设计目的是为了不同类型的 JDBC 操作提供模板方法
二、导入的架包
- mchange-commons-java-0.2.11.jar
- c3p0-0.9.5.2.jar
- commons-logging-1.2.jar
- mysql-connector-java-5.1.42-bin.jar
- spring-aop-5.0.7.RELEASE.jar
- spring-beans-5.0.7.RELEASE.jar
- spring-context-5.0.7.RELEASE.jar
- spring-core-5.0.7.RELEASE.jar
- spring-expression-5.0.7.RELEASE.jar
- spring-jdbc-5.0.7.RELEASE.jar
- spring-orm-5.0.7.RELEASE.jar
- spring-tx-5.0.7.RELEASE.jar
- spring-web-5.0.7.RELEASE.jar
- spring-webmvc-5.0.7.RELEASE.jar
三、配置c3p0数据源
db.properties:数据库的配置参数,以键值对的形式存放
jdbc.user=root
jdbc.password=lwh011305
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/spring4?useSSL=true
jdbc.initialPoolSize=5
jdbc.maxPoolSize=10
applicationContext.xml:数据库配置文件,导入 db.properties
文件的参数
然后需要配置 Spring 的 JdbcTemplate
四、使用JdbcTemplate实现对数据的增、删、改、查操作
1. 实例化IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");
2. 执行操作
2.1 增、删、改
使用 update(String sql, Object... args)
方法
String sql = "UPDATE employees SET last_name = ? WHERE id = ?";
jdbcTemplate.update(sql, "Peter2", 6);
2.2 批量更新:增、删、改
使用方法 batchUpdate(String sql, List
String sql = "INSERT INTO employees(last_name, email, dept_id) VALUES(?,?,?)";
//在集合中放入数组
List
2.3 从数据库中获取一条记录,即对象
使用 queryForObject(String sql, RowMapper
- 其中的 RowMapper 指定如何去映射结果集的行, 常用的实现类为 BeanPropertyRowMapper
- 使用 SQL 中的列的别名完成列名和类的属性名的映射, 如 last_name lastName
- 不支持级联属性. JdbcTemplate 到底是一个 JDBC 的小工具, 而不是 ORM 框架
PS:不是调用 queryForObject(String sql, Class
String sql = "SELECT id, last_name lastName, email FROM employees WHERE id = ?";
RowMapper rowMapper = new BeanPropertyRowMapper<>(Employee.class);
Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 5);
System.out.println(employee);
2.4 从数据库中获取集合
使用 query(String sql, RowMapper
String sql = "SELECT id, last_name lastName, email FROM employees WHERE id > ?";
RowMapper rowMapper = new BeanPropertyRowMapper<>(Employee.class);
List employees = jdbcTemplate.query(sql, rowMapper, 2);
System.out.println(employees);
PS:主要不是调用 queryForList() 方法
2.5 获取单个列的值
使用 queryForObject(String sql, Class
String sql = "SELECT count(id) FROM employees";
long count = jdbcTemplate.queryForObject(sql, Long.class);
System.out.println(count);