spring boot 配置入门mybatis

前言:个人感觉spring boot 配置mybatis还是挺简单的,省去了在xml中sqlsession工厂的配置和一些事务配置,使用注解就可以代替

注解相关 参考 https://blog.csdn.net/ityouknow/article/details/53063404

一.先搭建mybatis环境

第一步:在pom文件里面导入我们用到的包,如图

 第二步:在application.yml中配置

server:
  port: 8082
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/day20?characterEncoding=utf-8
    username: root
    password: 123
mybatis:
  type-aliases-package: com.asiainfo.bean   #实体类位置
  mapper-locations: classpath:mapper/*.xml  #mapper文件路径
logging:
  level:
   com.asiainfo.dao: debug                 #简单实现sql打印日志

 接下来就是大家熟知的mapper.xml文件的编写,和对应dao类的编写。贴上我写好的代码目录

第三步:不要忘记在启动类上加@mapperscan注释  //扫描的是mapper.xml中namespace指向值的包位置

基本步骤完毕。

二.基本事务的管理

贴上一段代码,我用的idea的 阿里代码规范约束,不指定异常类会有波浪提示

//开启事务的注解 指定了回滚的异常类  
 @Transactional(rollbackFor =Exception.class)
    public  void  add(User u){
       try {
           userDao.add(u);
        
           int i = 9/0;  //构造异常
       }catch (Exception e){
        //手动进行回滚事务  
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            
       }

    }

@Transactional可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。因此可以在Service层和Controller层使用。

  1. 通过@Transactional,实现了事务操作。
  2. Spring的AOP即声明式事务管理默认是针对unchecked exception回滚。也就是默认对RuntimeException()异常或是其子类进行事务回滚;checked异常,即Exception可try{}捕获的不会回滚,因此对于我们自定义异常,通过rollbackFor进行设定

  3. 如果我们需要捕获异常后,同时进行回滚,通过TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();进行手动回滚操作。
  4. 使用Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); 
    设置回滚点,使用TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);回滚到savePoint。

常用注解配置:

readOnly 该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。例如:@Transactional(readOnly=true)
rollbackFor 该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。例如:指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})
rollbackForClassName 该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。例如:指定单一异常类名称@Transactional(rollbackForClassName=”RuntimeException”)指定多个异常类名称:@Transactional(rollbackForClassName={“RuntimeException”,”Exception”})
noRollbackFor 该属性用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。例如:指定单一异常类:@Transactional(noRollbackFor=RuntimeException.class)指定多个异常类:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})
noRollbackForClassName 该属性用于设置不需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,不进行事务回滚。例如:指定单一异常类名称:@Transactional(noRollbackForClassName=”RuntimeException”)指定多个异常类名称:@Transactional(noRollbackForClassName={“RuntimeException”,”Exception”})
propagation 该属性用于设置事务的传播行为。例如:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)
isolation 该属性用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的情况,通常使用数据库的默认隔离级别即可,基本不需要进行设置
timeout 该属性用于设置事务的超时秒数,默认值为-1表示永不超时

猜你喜欢

转载自blog.csdn.net/oschina_40730821/article/details/81508398