MP:使用步骤、分页、queryWrapper

Mybatis-Plus

官网:

MyBatis-Plus (baomidou.com)

1. 意义

mybatis-plus是一个插件,它不能单独使用,必须配合mybatis使用,作用是简化mybatis操作,通过使用MP提供的方法,自动生成SQL语句进行CRUD

2. 使用步骤

  • 使用MP进行CRUD

  1. 坐标

  2. 通过新增注解(MyBatisPlus)标注 实体与表字段的映射关系

@TableName(value = "student")

@TableField(value = "id") @TableId(type = IdType.AUTO)

@TableLogic(value = "0",delval = "1")逻辑删除时用的字段

  1. 继承BaseMapper(DAO),IService/ServiceImpl(Service),使用该类的方法

  2. 测试类使用MyBatisSqlSessionFactoryBuilder

  3. 调用对应的方法


逻辑删除

  • 解释

本质是修改操作,修改数据库中的状态字段,规定是否可见

物理删除:业务数据从数据库中丢弃,执行的是delete操作

  • 逻辑删除:为数据设置是否可用状态字段,删除时设置状态字段为不可用状态,

  • 数据保留在数据库中,执行的是update操作

  • 步骤

  1. 步骤1:修改数据库表添加deleted列,比如0代表正常,1代表删除,可以在添加列的同时设置其默认值为0正常。

  2. 步骤2:添加注解

  • @TableLogic(value="0",delval="1")

  • private Integer deleted;

  • value为正常数据的值,delval为删除数据的值


3.分页

使用步骤

1.坐标

2.mybatis核心配置文件中配置组件

3.测试使用:Page对象定义分页规则(size/current)---->查询条件------>获取IPage对象使用selectPage()+Page与查询条件 = mapper.selectPage(page,queryWrapper);

 /****************Mybatis-Plus注解**********************/
  // blog.csdn.net/m0_53067943/article/details/126061704
 @TableName 
 /*   作用:指定类为哪个表的实体类
     位置:实体类上方
     数据库表名为t_student,实体类名为Student
 @TableName(value = "t_student")
 */
 @TableId
 /*作用:指定实体类的属性为主键
   位置:属性上方
   属性:
 ​
 value:主键字段名
 type:主键策略,有以下几种
 */
 @TableField
 /*作用:在属性和列名不同的情况下,指定映射关系
 位置:非主键属性上方
 属性:
 value:非主键字段名*/
 @TableLogic
 /*作用:在使用逻辑删除的时候使用该注解
 位置:逻辑删除属性上方
 逻辑删除是指不会在数据库进行物理删除数据,而是通过一个变量代表它被删除。*/
 @Version
 /*作用:在使用 MyBatis-Plus 乐观锁插件时使用
 位置:属性上方
 乐观锁:乐观锁在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做*/
     

乐观锁

在修改数据的时候,我们先查一下数据库的version的值,然后进行各种操作,

在提交数据前,再从数据库中查找当前version的值是否和自己先前查到的version值是否相等,

如果不相等,就回滚,如果相等,就提交事务,并将version的值 + 1

使用步骤

  1. 在表中添加version字段

  2. 修改实体

 @Data
 public class User{
     private String name;
     @Version
     private Integer version;
 }
  1. 添加乐观锁插件配置

 @Bean
 public MybatisPlusInterceptor mybatisPlusInterceptor() {
     MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
     //乐观锁插件
     interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
     return interceptor;
 }
 ​

这样就配置好了乐观锁

mp实现分页,自带的分页插件,而mybatis是第三方的插件

步骤

1.配置类

MP:使用步骤、分页、queryWrapper_第1张图片

 

2.分页操作

MP:使用步骤、分页、queryWrapper_第2张图片

 

4. wrapper

1.类图

MP:使用步骤、分页、queryWrapper_第3张图片

 

2.作用

MP:使用步骤、分页、queryWrapper_第4张图片

 

===方法

eq:等于,参数一个条件

allEq:全等于,参数是一个map集合,可以一次匹配多个条件,

ne:不等于

gt:大于,ge:大于等于,lt:小于,le:小于等于

between:在值1和值2之间,notBetween:不在值1和值2之间

like:’%值%’,notLike:’%值%’,likeLeft:’%值’,likeRight:‘值%’

isNull:字段 IS NULL,isNotNull:字段 IS NOT NULL

in:字段 IN (v0, v1, …),notIn:字段 NOT IN (value.get(0), value.get(1), …)

inSql:字段 IN ( sql语句 ),notInSql:字段 NOT IN ( sql语句 )

MP:使用步骤、分页、queryWrapper_第5张图片

 

or:拼接 OR,

and 嵌套

注意事项: 主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)

exists:拼接 EXISTS ( sql语句 ),notExists:拼接 NOT EXISTS ( sql语句 )

        MP:使用步骤、分页、queryWrapper_第6张图片

 

orderBy:指定是否排序,升序还是降序

orderByAsc:排序:ORDER BY 字段, … ASC,orderByDesc:排序:ORDER BY 字段, … DESC

你可能感兴趣的:(mybatis,java,数据库)