2025年3.4.2MybatisPlus学习

3.4.2MybatisPlus学习MP 学习 简介 Mybatis plus 是 Mybatis 的增强工具 之增强 不改变 简化开发提升效率 特性 实际操作 快速入门 创建项目 依赖导入 创建实体类 lombok 创建 mapper 继承 BaseMapper 在启动类上添加注解

大家好,我是讯享网,很高兴认识大家。
  1. MP学习

    1. Mybatis-plus是Mybatis的增强工具,之增强,不改变,简化开发提升效率。
    2. 特性
    3. 实际操作

    快速入门:

    1. 创建项目
    2. 依赖导入
    3. 创建实体类(lombok)
    4. 创建mapper(继承BaseMapper)
    5. 在启动类上添加注解@MapperScan(mapper路径),扫描mapper
    6. test测试
    简介

mybatis日志

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl 

讯享网
主键策略
  1. 自动增长

    缺点:分表需要知道上一张表的最后一条数据id

  2. UUID


    讯享网

    缺点:无法排序

    有点全局唯一

  3. Redis生成主键ID
  4. 自带策略(19雪花算法)
自动填充create_time、update_time(不使用set)
  1. 数据库添加字段
  2. 实体类添加注解
  3. 元对象处理接口
讯享网@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) } } 
乐观锁和悲观锁

乐观锁: 主要解决丢失更新问题

如果不考虑事务隔离性,产生读的问题

  1. 脏读
  2. 不可重复读
  3. 幻读

如果不考虑事务隔离性,产生写的问题:丢失更新问题

悲观锁:串行

乐观锁
  1. 数据库添加version字段
  2. 实体类中添加@Version
  3. 在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; } } 
  1. 测试
讯享网// 乐观锁 @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)]

小讯
上一篇 2025-02-18 10:59
下一篇 2025-02-27 08:30

相关推荐

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