前言学习内容
什么是Spring JDBC?Spring JDBC使用步骤JdbcTemplate数据查询
查询单条数据查询多条数据 JdbcTemplate数据写入编程式事务管理声明式事务管理事务传播行为注解形式声明事务 总结
前言上一节我们学习了Spring AOP相关知识,接下来我们继续学习Spring JDBC技术。
学习内容 什么是Spring JDBC?Spring JDBC是Spring框架用于处理关系型数据库的模块;Spring JDBC对JDBC API进行封装,极大简化开发工作量;JdbcTemplate是Spring JDBC的核心类,提供数据的CRUD方法; Spring JDBC使用步骤
- Maven工程中引入依赖spring-jdbc;
org.springframework spring-context 5.2.6.RELEASE org.springframework spring-jdbc 5.2.6.RELEASE mysql mysql-connector-java 8.0.16
- applicationContext.xml配置DataSource数据源;
- 在Dao注入JdbcTemplate对象,实现数据CRUD;
public class EmployeeDao {
private JdbcTemplate jdbcTemplate;
public Employee findById(Integer eno){
String sql = "select * from employee where eno = ?";
//查询单条数据
Employee employee = jdbcTemplate.queryForObject(sql, new Object[]{eno}, new BeanPropertyRowMapper(Employee.class));
return employee;
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
运行结果:
直接使用query
使用Map封装
JdbcTemplate数据写入
新增数据
修改数据
删除数据
编程式事务管理
编程式事务是指通过代码手动提交回滚事务的事务控制方法SpringJDBC通过TranscationManager事务管理器实现事务控制事务管理器提供commit/rollback方法进行事务提交与回滚
public class EmployeeService {
private EmployeeDao employeeDao;
private DataSourceTransactionManager transactionManager;
public void batchimport(){
//定义了事务默认的标准配置
TransactionDefinition definition = new DefaultTransactionDefinition();
//开始一个事务,返回事务状态,事务状态说明当前事务的执行阶段
TransactionStatus status = transactionManager.getTransaction(definition);
try {
for (int i = 1; i <= 10; i++) {
Employee employee = new Employee();
employee.setEno(8000 + i);
employee.setEname("员工" + i);
employee.setSalary(4000f);
employee.setDname("市场部");
employee.setHiredate(new Date());
employeeDao.insert(employee);
}
//提交事务
transactionManager.commit(status);
}catch (RuntimeException e){
//回滚事务
transactionManager.rollback(status);
throw e;
}
}
public EmployeeDao getEmployeeDao() {
return employeeDao;
}
public void setEmployeeDao(EmployeeDao employeeDao) {
this.employeeDao = employeeDao;
}
public DataSourceTransactionManager getTransactionManager() {
return transactionManager;
}
public void setTransactionManager(DataSourceTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
}
分析:
这时候我们执行操作的时候要么全部插入,要么一条都不插入,因为数据是以事务的方式进行提交的。
声明式事务是指在不修改源代码的情况下通过配置形式自动实现事务控制,声明式事务的本质是AOP环绕通知当目标方法执行成功时,自动提交事务当目标方法抛出异常时,自动回滚事务
配置TranscationManager事务管理器
配置事务通知与事务属性
- 为事务绑定PointCut切点
事务传播行为
事务传播行为是指多个拥有事务的方法在嵌套调用时的事务控制方式XML: applicationContext.xml
本节我们学习了Spring JDBC与JdbcTemplate对象的使用以及编程式事务和声明式事务相关知识,欢迎评论区交流~
总结



