• spring boot配置mybatis和事务管理


    spring boot配置mybatis和事务管理

    一、spring boot与mybatis的配置

    1.首先,spring boot 配置mybatis需要的全部依赖如下:

    <!-- Spring Boot 启动父依赖 -->
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
    </parent>
    <!--以上内容放在dependencies标签外,如果你有已经有父标签,那将以上部分粘贴到父项目中-->
    <!-- spring boot 项目启动必须引入的web依赖,以下内容放在dependency即可 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>1.5.1.RELEASE</version>
    </dependency>       
     <!-- Spring Boot Mybatis 依赖 -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.2.0</version>
    </dependency>
     <!-- oracle的数据库驱动包 -->
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.4.0-atlassian-hosted</version>
    </dependency>
    

      这里主要说一下上边的数据库驱动包,oracle和mysql引入不同的依赖,千万不要忘记。如果忘记引入,会报找不到驱动类异常。 

    2.然后,在application.properties 配置文件里添加如下内容:

    ##数据库连接信息
    spring.datasource.url=jdbc:oracle:thin:@//192.168.1.171:1521/orcl
    spring.datasource.username=znxd
    spring.datasource.password=znxd
    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    ##指向mapper的xml文件位置
    mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    

      上边以spring.datasource 开头的内容其实有很多,具体,在application.properties 文件里输入后看看能点出的内容就知道了。 
      springboot默认会把spring.datasource开头的信息收纳,进行DataSource对象的配置,进而进行sqlSessionFactory的配置等相关数据库连接的配置,所以其他很多人会说写什么配置类,那些我感觉没有必要的。(配置druid需要配一个@Bean,下一篇会说到) 
      当然如果是特别详细的,而在application.properties文件里又通过spring.datasource 点不出相关的配置,那可能需要配置类什么的。 
      mybatis.mapper-locations 所指向的位置是从src/main/resource开始的,前边需要加上classpath,它指向的是你的mapper.xml文件放置的位置。 

     3.spring boot+mybatis除了这些要求,还需要在启动类处添加一个注解@MapperScan,如下:

    package cloud.kafka;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    @SpringBootApplication
    @EnableTransactionManagement //如果mybatis中service实现类中加入事务注解,需要此处添加该注解
    @MapperScan("cloud.kafka.mapper")  //扫描的是mapper.xml中namespace指向值的包位置
    public class KafkaLogApplication {
        public static void main(String[] args){
            SpringApplication.run(KafkaLogApplication.class, args);
        }
    }
    

      如下是我的mapper.xml里namespace的值:

    <mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >
    

      

    二、事务的配置,就是在mybatis的基础上加上两个注解。 
    1、需要的注解为@EnableTransactionManagement 和@Transactional 两个,它们来自于下边这个包:

    spring-tx.jar
    

      该包其实在前边配置mybatis引入依赖时,已自动引入,就是下边这个:

     <!-- Spring Boot Mybatis 依赖 -->
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.2.0</version>
    </dependency>
    

      所以只要上边的依赖引入进来,那事务就不需要再引入包了, 
    2.首先,找到你的service实现类,加上@Transactional 注解,如果你加在类上,那该类所有的方法都会被事务管理,如果你加在方法上,那仅仅该方法符合具体的事务。当然我们一般都是加在方法上。因为只有增、删、改才会需要事务。 
    比如下边的一个插入数据的方法添加事务:

    @Override
    @Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=36000,rollbackFor=Exception.class)
    public Integer add(Cbf_jtcy t) {
        return cbf_jtcyMapper.insert(t);
    }
    

      

    如果不知道里边都是什么东西,可以查看这篇文章,spring,mybatis事务管理配置与@Transactional注解使用

    3.配置完后,spring boot启动类必须要开启事务,而开启事务用的注解就是@EnableTransactionManagement,如下:

    @SpringBootApplication
    @EnableTransactionManagement 
    @MapperScan("microservice.qssj.mapper")//必须加这个,不加报错,如果不加,也可以在每个mapper上添加@Mapper注释,并且这里还要多填一个注释,那个我忘了,我一直用这个注解
    public class QssjServiceApplication {
        public static void main(String[] args) {
            SpringApplication.run(QssjServiceApplication.class, args);
        }
    }
    

      

  • 相关阅读:
    vss修复
    缓存项增加删除测试
    temp
    jQuery的三种Ajax模式
    Lucene入门与使用(1)转
    详细解析Java中抽象类和接口的区别
    IT人,不要一辈子靠技术生存[转载]
    setTimeout和setInterval的使用 【转载】
    JQuery实现省市区三级联动
    学习jQuery
  • 原文地址:https://www.cnblogs.com/weihuang6620/p/11099375.html
Copyright © 2020-2023  润新知