-
MP学习
- Mybatis-plus是Mybatis的增强工具,之增强,不改变,简化开发提升效率。
- 特性
- 实际操作
快速入门:
- 创建项目
- 依赖导入
- 创建实体类(lombok)
- 创建mapper(继承BaseMapper)
- 在启动类上添加注解@MapperScan(mapper路径),扫描mapper
- test测试
mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
讯享网
主键策略
- 自动增长
缺点:分表需要知道上一张表的最后一条数据id
- UUID
缺点:无法排序
有点全局唯一
- Redis生成主键ID
- 自带策略(19雪花算法)
自动填充create_time、update_time(不使用set)
- 数据库添加字段
- 实体类添加注解
- 元对象处理接口
讯享网@Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ...."); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用) // 或者 this.strictUpdateFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐) // 或者 this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug) } @Override public void updateFill(MetaObject metaObject) { log.info("start update fill ...."); this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐) // 或者 this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐) // 或者 this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug) } }
乐观锁和悲观锁
乐观锁: 主要解决丢失更新问题
如果不考虑事务隔离性,产生读的问题
- 脏读
- 不可重复读
- 幻读
如果不考虑事务隔离性,产生写的问题:丢失更新问题
悲观锁:串行
乐观锁
- 数据库添加version字段
- 实体类中添加@Version
- 在MybatisPlusConfig中添加拦截器
@Configuration @EnableTransactionManagement @MapperScan("com.wl.mybatis_plus.mapper") public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; } }
- 测试
讯享网// 乐观锁 @Test public void OptimisticLockerTest(){ User user = userMapper.selectById(1l); user.setName("xiaohu"); userMapper.updateById(user); }
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SU8g5SsE-57)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\50.png)]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28724.html