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

Spring整合MyBatis

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

Spring整合MyBatis

Spring整合MyBatis

Spring两大核心思想:IoC和AOP

IoC:控制反转,Spring容器可以完成对象的创建、属性注入、对象管理等工作

AOP:面向切面,在不修改原有业务逻辑的情况下,实现对原有业务的增强

Spring可以对MyBatis提供哪些支持? Spring IoC支持
  • 需要创建DataSource数据源对象

  • 需要创建SqlSessionFactory对象

  • 需要创建SqlSession对象

  • 需要创建Dao(Mapper)对象

Spring IoC可以为MyBatis完成DataSource、SqlSessionFactory、SqlSession以及Dao对象的创建

SpringAOP支持

复用工作

使用Spring提供的事务管理切面类完成对MyBatis数据库操作中的事务管理

整合MyBatis准备工作

1、创建maven工程

2、部署MyBatis框架

  • ​ 添加依赖

    • MySql驱动
    • MyBatis
  • 
        mysql
        mysql-connector-java
        5.1.47
    
    
    
        org.mybatis
        mybatis
        3.4.6
    
    
  • 创建mybatis配置文件(空)无需进行任何配置

  • 
    
    
    
    
    
  • 部署Spring框架

  • 
        org.springframework
        spring-context
        5.2.12.RELEASE
    
    
        org.springframework
        spring-aspects
        5.2.12.RELEASE
    
    
         org.springframework
         spring-jdbc
         5.2.12.RELEASE
    
    
  • 创建Spring配置文件

  • 
    
    
    
    
在项目中添加Spring整合MyBatis-Spring的依赖

MyBatis-Spring

  • mybatis兼容Spring补丁

  • 
        org.mybatis
        mybatis-spring
        1.3.2
    
    
spring整合MyBatis整合配置 整合Druid连接池

1、添加依赖


    com.alibaba
    druid
    1.1.10

2、创建druid.properties文件

druid.driver=com.mysql.jdbc.Driver
druid.url=jdbc:mysql://localhost:3306/db_mybatis?characterEncoding=utf8&useSSL=true
druid.username=root
druid.password=admin

## 连接池参数
## 初始化连接数
druid.pool.init=3
##最小连接数
druid.pool.minIdle=3
##最大连接数
druid.pool.maxActive=20
##超时时间
druid.pool.timeout=30000

3、在applicationContext.xml中配置Druid数据源DataSource

    
        
        
        
        

        
        
        
        
    
整合MyBatis创建SqlSessionFactory

依赖Spring容器创建MyBatis的SqlSession对象

    

        

        

        

        
    
整合MyBatis-创建Mapper的配置
    
        
        
    
Spring整合MyBatis 整合AOP配置

使用Spring提供的事务管理切面类完成Dao作用增删改操作的事务管理

事务隔离级别
  • READ_UNCOMMITED(读未提交)T1在执行的过程中,T2既可以读也可以写,T1可以读取到T2未提交的数据(脏读)
  • READ_COMMITED(读已提交)T1在执行的过程中,T2可以读也可以写,但是T1只能读到T2提交后的数据(不可重复读)
  • REPEATABLE_READ(可重复读)T1执行过程中,T2智能读,但不能改,T2可以添加数据(幻读)
  • SERIALIZABLE(串行化)T1在执行的过程中,T2既不能读也不能写
事务传播机制

propagation中设置事务传播机制:

REQUIRED 如果上层方法没有事务,则创建一个新的事务,如果已经存在事务,则加入到事务中。

SUPPORTS如果上层方法没有事务,则以非事务方式执行:如果已经存在事务,则加入到事务中。

REQUIRES_NEW 如果上层方法没有事务,则创建一个欣的事务,如果已经存在事务,则将当前事务挂起

NOT_SUPPORTED 如果上层方法没有事务,则以非事务方式执行,如果已经存在事务,则将当前事务挂起

NEVER 如果上层方法没有事务,则以非事务方式执行,如果已经存在事务,则抛出异常。

MANDTORY 如果上层方法已经存在事务,则加入到事务中执行如果不存在事务,则抛出异常。

NESTED 如果上层方法没有事务,则创建新的事务,如果已经存在事务,则嵌套到当前事务中

SpringAOP事务管理配置
    
        
    

    
        
            
            
            
            
        
    

    
        
        
    
基于注解配置SpringAOP事务管理
  • 在applicationContext.xml中配置事务管理,声明注解方式进行事务配置
    
        
    
    
    

  • 在需要Spring进行事务管理的方法上添加@Transactional注解

  • @Transactional(isolation = Isolation.REPEATABLE_READ,propagation = Propagation.SUPPORTS)
    public List listUsers() {
        return userDao.queryUsers();
    }
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361608.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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