mybatis 手动/自动触发事务回滚

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 手动/自动触发事务回滚相关的知识,希望对你有一定的参考价值。

参考技术A 有时候我们在service层的某个方法中,得到的不是我们期望的结果,我们就要手动或者自动触发事务回滚

首先要设置@EnableTransactionManagement(springboot开启事务支持的方式),然后要在方法上设置@Transactional

场景1:

场景2:

Mybatis中添加查询修改删除

在Mybatis中添加数据的操作


编写相对应的SQL语句,并完成相关数据的对应关系

编写测试用例

需要提交事务 sqlSession commit()

这里需要注意的是mybatis是默认的是手动提交事务,如果不写的话会进行回滚,添加操作就不会被执行

或者在

如果想要获取到添加数据的id值(id一般默认是自动增长的)

需要在sql映射文件中,也就是mapper.xml中添加一些元素 useGeneratedKeys=“true” keyProperty=“id”

查询操作

多条件查询

  • 当提供了几个属性时,可以根据这些属性进行具体查询

  • 有三种方法

  • 1.根据提供的具体的属性,在测试类中属性传递过来,相互对应

单条件动态查询

  • 当遇到给到的数据比较少时,且每次给到的数据不一样的时候,可以使用单条件的动态查询

使用《choose》标签可以选择其中的一个或几个属性(使用《when》标签)进行执行

修改数据的操作

使用动态SQL来执行修改操作,使用set标签,(那个数据填入就修改那个数据,原来的数据不变)

批量删除

  • SQL的映射文件
  • mybatsi在批量删除时,当传入一个int[]集合时
    mybatis会将数组参数,封装为一个Map集合
    * 默认:collection的名称为array
    * 使用@Param注解改变map集合的默认key名称
    《foreach》指要遍历那个数组,separator表示分隔符
    open=“(” close=“)” 也可添加进去,方便开发

通过@Param来修改名称

以上是关于mybatis 手动/自动触发事务回滚的主要内容,如果未能解决你的问题,请参考以下文章

spring全注解事务管理中怎么手动回滚事物

MyBatis

Mybatis中添加查询修改删除

Mybatis 事物回滚最简单的操作方式

SQL Server 触发器

@tranactional回滚只能限于一个方法内吗