1 可能你会觉得奇怪,明明我创建表的时候,设置id自增从1开始。自增主键,数据库设置了自增主键后,po类需要增加@TableId(type = IdType.AUTO),或者不要id字段才能生效。

否则会自动分配id,如下图:

mybatis plus注意的地方_mybatis


2 数据库映射枚举,不能是tinyint(1),tinyint(1)默认是boolean类型

3 使用lambaQuery时,参数为空会带入到SQL中(branch_code = null),需要手动过滤,或者在eq中增加条件

mybatis plus注意的地方_死锁_02


4 事务建议加上propagation传播特性

我用的比较多的是REQUIRED,如果有事务在运行,当前的方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行。这样可以防止多个操作同一张数据库表,也就是防止两个事务同时进行操作同一张表,以防死锁的情况等。死锁发生会造成接口访问超时,访问受阻。

@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)开发中其实常用的就只有REQUIRED和REQUIRES_NEW

mybatis plus注意的地方_mybatis_03


mybatis plus注意的地方_死锁_04


mybatis plus注意的地方_死锁_05