Mybatis Plus笔记

使用步骤

  • 第一步:导入pom文件
  • 第二步:接口实现BaseMapper<实体类>,并且在头上加一个@Repository注解,交由spring管理,以便等下启动类扫描
  • 第三步:在启动类添加@MapperScan("com.你的接口地址")
  • 第四步:使用 --在需要用到的地方用@Autowired注入

主键策略

  • 自动增长 AUTO INCREMENT
  • uuid 每次生产随机唯一值
  • Redis实现
  • Mybatis plus自带实现 ---
    方法是--在实体类ID主键上方加上 @TableId(type =IdType.AUTO)
    AUTO--自动增长
    ID_WORKER--生成19位值,数值类型用这种
    ID_WORKER_STR--生成19位值,字符串类型用这种

Mybatis plus properties配置打印信息

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

自动填充--一般用于添加时间和修改时间

  • 第一步:在实体类需要自动填充的属性上面添加注解
    ①@TableField(fill=FieldFill.INSERT)--添加
    ②@TableField(fill=FieldFill.INSERT_UPDATE)--添加和修改

  • 第二步:创建类,实现接口 MetaObjectHandler,添加@Component注解,并重写两个方法
    `@Component
    public class newData implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
    this.setFieldValByName("你的实体类添加时间属性",new Date(),metaObject);
    this.setFieldValByName("你的实体类修改时间属性",new Date(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
    this.setFieldValByName("你的实体类修改时间属性",new Date(),metaObject);
    }
    }`

乐观锁

问题:丢失更新---多个人同时修改一条数据,最后提交的数据会覆盖前面修改的
解决方案:👇
--悲观锁--
串行操作,同一条数据只能同时有一个人修改数据,其他人需要等这个人修改完才能修改

乐观锁--

数据表添加version(版本号),修改成功后会在原有的版本上+1,修改数据时会检查当前版本是否和数据库一致,如不一致则不能修改。
1. 数据库中添加Version字段,作为乐观锁版本号

 2. 实体类添加Version字段,并添加@Version注解

 3. 乐观锁插件--放入配置类中,也可以放在启动类
  `@Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
    return new OptimisticLockerInterceptor();
  }`
测试

分页

  1. 创建配置类
    PageHelper分页配置 @Bean public PaginationInterceptor paginationInterceptor(){ return new PaginationInterceptor(); }

  2. 编写分页代码

    `//分页查询
    @Test
    public void testpage(){
    //创建page对象,传入当前页和记录数
    Pagepage =new Page<>(1,3);
    //调用分页查询的方法,传入page对象和条件
    userinfoMapper.selectPage(page,null);
    //通过page对象得到分页数据
    System.out.println(page.getCurrent());//当前第几页
    System.out.println(page.getRecords());//每页数据list集合
    System.out.println(page.getSize());//每页记录显示大小
    System.out.println(page.getTotal());//数据总数
    System.out.println(page.getPages());//总页数

     System.out.println(page.hasNext());//是否有下一页
     System.out.println(page.hasPrevious());//是否有上一页
    

    }`

逻辑删除

---简单说就是修改某字段值,列如显示1是已经删除,0是正常
---流程 👇
-1. 数据库添加删除状态字段

-2. 实体类添加删除状态字段
@TableField(fill= FieldFill.INSERT) @TableLogic private Integer deleted;//逻辑删除
--并且在自动填充类添加默认值0
//逻辑删除 this.setFieldValByName("deleted",0,metaObject);
-3. 执行删除后,你会发现其实是修改了状态字段的一个值

复杂查询

  1. 创建QueryWrapper对象
  2. 调用方法实现各种条件的查询
    通过QueryWrapper设置条件 ge(大于等于>=)、 gt(大于>)、 le(小于等于<=)、 lt(小于<)、eq(等于=)、ne(不等于!=)、like(模糊查询)、orderByDesc/Asc(排序查询)、last(语句最后拼接sql)、between(范围查询)、select(查询指定列)

配合方法使用

-1.根据名字查询一条对象信息
User user=UserServeci.getOne(new LambdaQueryWrapper().eq(User ::getUserName,"张三"))

Mybatis,Oracle数据库XML开始时间结束时间

---

posted @ 2021-10-23 12:56  咩咩咩咩咩咩w  阅读(55)  评论(0)    收藏  举报