官网:
MyBatis-Plus (baomidou.com)
mybatis-plus是一个插件,它不能单独使用,必须配合mybatis使用,作用是简化mybatis操作,通过使用MP提供的方法,自动生成SQL语句进行CRUD
使用MP进行CRUD
坐标
通过新增注解(MyBatisPlus)标注 实体与表字段的映射关系
@TableName(value = "student")
@TableField(value = "id") @TableId(type = IdType.AUTO)
@TableLogic(value = "0",delval = "1")逻辑删除时用的字段
继承BaseMapper(DAO),IService/ServiceImpl(Service),使用该类的方法
测试类使用MyBatisSqlSessionFactoryBuilder
调用对应的方法
逻辑删除
解释
本质是修改操作,修改数据库中的状态字段,规定是否可见
物理删除:业务数据从数据库中丢弃,执行的是delete操作
逻辑删除:为数据设置是否可用状态字段,删除时设置状态字段为不可用状态,
数据保留在数据库中,执行的是update操作
步骤
步骤1:修改数据库表添加
deleted
列,比如0
代表正常,1
代表删除,可以在添加列的同时设置其默认值为0
正常。步骤2:添加注解
@TableLogic(value="0",delval="1")
private Integer deleted;
value为正常数据的值,delval为删除数据的值
使用步骤
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
使用步骤:
在表中添加version字段
修改实体
@Data public class User{ private String name; @Version private Integer version; }
添加乐观锁插件配置
@Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //乐观锁插件 interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; } 这样就配置好了乐观锁
mp实现分页,自带的分页插件,而mybatis是第三方的插件
步骤
===方法
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语句 )
or:拼接 OR,
and 嵌套
注意事项: 主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)
exists:拼接 EXISTS ( sql语句 ),notExists:拼接 NOT EXISTS ( sql语句 )
orderBy:指定是否排序,升序还是降序
orderByAsc:排序:ORDER BY 字段, … ASC,orderByDesc:排序:ORDER BY 字段, … DESC