关于mybatis插入返回主键id和SpringBoot事务注解自调用演示

文章目录

    • 一. 插入返回任意规则主键ID
    • 二. SpringBoot自调用事务
      • 2.1 场景1
      • 2.2 场景2
    • 自调用结论总结


一. 插入返回任意规则主键ID

··实体对象

@TableName("bank")
@Data
public class Entity {@TableId("id")Integer id;@TableField("money")Integer money;@TableField("name")String name;public Entity(String name,Integer money){this.name = name;this.money = money;}
}

在这里插入图片描述

在这里插入图片描述
结论:返回值依旧是受影响行数,但insert标签中selectKey.keyProperty可以绑定入参对象的指定属性。
keyProperty: 绑定到入参对象的属性
order: 指定该标签语句执行顺序


二. SpringBoot自调用事务

在这里插入图片描述
下列是程序执行前数据库快照
在这里插入图片描述

2.1 场景1

事务入口public方法,自调用子方法规则任意
执行金额增加和扣减快照如下
在这里插入图片描述
变种
在这里插入图片描述
在这里插入图片描述
事务均成功
结论: 建议事务注解放在controller层。或者放在controller调用的第一个service作为事务入口 不需要考虑很多问题


2.2 场景2

自调用子方法为事务入口
无事务方法,自调用有事务方法
代码执行后快照
在这里插入图片描述
结论:事务失效

自调用结论总结

结论: 建议事务注解放在controller层。或者放在controller调用的第一个service作为事务入口 不需要考虑很多问题