注意:性能分析工具最好不要在生产环境部署,只在开发、测试环境部署用于查找问题即可。
乐观锁插件 第一步:添加必要的配置 @EnableTransactionManagement @Configuration @MapperScan("com.example.springbootdemo.plusmapper") public class MyBatisPlusConfig { //... // mybatis-plus乐观锁插件 @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } } 第二步:添加@Version @Version private int version;注意:
@Version支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime;
整数类型下 newVersion = oldVersion + 1;
newVersion 会回写到 entity 中
仅支持 updateById(id) 与 update(entity, wrapper) 方法
在 update(entity, wrapper) 方法下, wrapper 不能复用!!!
实体主键配置 @Getter public enum IdType { /** * 数据库ID自增 */ AUTO(0), /** * 该类型为未设置主键类型 */ NONE(1), /** * 用户输入ID * 该类型可以通过自己注册自动填充插件进行填充 */ INPUT(2), /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */ /** * 全局唯一ID (idWorker) */ ID_WORKER(3), /** * 全局唯一ID (UUID) */ UUID(4), /** * 字符串全局唯一ID (idWorker 的字符串表示) */ ID_WORKER_STR(5); private int key; IdType(int key) { this.key = key; } }AUTO:自增,适用于类似MySQL之类自增主键的情况
NONE:不设置???
INPUT:通过第三方进行逐渐递增,类似Oracle数据库的队列自增
ID_WORKER:全局唯一ID,当插入对象ID为空时,自动填充
UUID:全局唯一ID,当插入对象ID为空时,自动填充,一般情况下UUID是无序的
ID_WORKER_STR:字符串全局唯一ID,当插入对象ID为空时,自动填充
注意事项最好不要和devTools一起使用,因为devTools中的RestartClassLoader会导致MyBatis Plus中的枚举自动映射失败,因为类加载器的不同从而在MyBatis的TypeHasnlerRegistry的TYPE_HANDLER_MAP集合中找不到对应的枚举类型(存在这个枚举类型,只不过是用AppClassLoader加载的,不同的加载器导致类型不同)
MyBatis Plus和JPA分页有些不同,前者从1开始计页数,后者则是从0开始。