一. 插入返回任意规则主键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作为事务入口 不需要考虑很多问题
被事务注解修饰的方法,不能被本身其他方法调用。这个算失效,但是可以主动调自身的其他方法