栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一起学Java——Spring基础(3)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一起学Java——Spring基础(3)

目录

前言学习内容

什么是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;
    }
}

 
        
   

运行结果:

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:propagation=“REQUIRES_NEW”/>注解:@Transactional(propagation=Propagation.REQUIRED)

注解形式声明事务

applicationContext.xml



    
    
    
        
        
        
        
    
    
    
        
    
    
    
        
    
    
    

总结

本节我们学习了Spring JDBC与JdbcTemplate对象的使用以及编程式事务和声明式事务相关知识,欢迎评论区交流~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731916.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号