1.简要介绍

1.作用:简化单表的增删改查CRUD,省去单表sql和mapper编写.也可以省去Service的编写,代码更加简化,但可能会导致循环依赖问题(A依赖B,B依赖A即循环依赖),出现循环依赖问题改写注入调用mapper可解决

2.mybatis-plus依赖:com.baomidou    mybatis-plus-boot-starter

3.1其中自定义的Mapper接口需要实现BaseMapper<实体类>,然后就可以集成到BaseMapper中定义的方法了,例public interface UserMapper extends BaseMapper<User>{}

,到时@Autowired注入实体类mapper调用usermapper

3.2对于service的简化,可以用自己的service去继承它提供的service

接口继承IService<T>,实现类继承ServiceImpl<M,T>

例子  public interface StudentService extends IService<Student> {}       

public class StudentServiceImpl extends ServiceImpl<StudentMapper,Student> implements StudentService {}

2.注意事项

1.如果表名和实体类名称不一致,可用@TableName标注在实体类上与表对应

如@TableName("tb_user")标注在实体类User上

如果大部分表前缀固定,可在配置文件中进行全局配置,但是优先级比注解配置低

mybatis-plus.global-config.db-config.table-prefix:tb_#表前缀

2.@TableId标注在id上可通过type值声明主键生成策略,可主键自增也可雪花算法生成纯数字

大部分主键都是自增,也可全局配置文件配置mybatis-plus.global-config.db-config.id-type:auto

3.用mybatis-plus还应配置日志打印和驼峰映射配置文件

3.使用规则

MybatisPlus可以单表增(insert)、删(根据id单个删deleteById或id集合批量删deleteBatchIds)、改(id修改不为空的字段updateByIds)、查(根据单个id查selectById或多个id批量查询selectbyIds),对于跟复杂的查询使用了封装思想将查询条件封装成Wrapper对象

new QueryWrapper,由于mybatis-plus支持lambda表达式,字段不易写错且支持链式编程,更常用new LambdaQueryWrapper,向封装条件wrapper中填写封装查询条件,最后mapper实例调用方法查wrapper即可,对于带有分组过滤的查询就不能使用lambda表达式只能用Querywapper(如count>1无法在lambda表达式中书写).

如果是更新对应的是UpdateWrapper,删除还是Querywapper.

MyBatis-Plus提供注解实现逻辑删除功能,数据非常宝贵有事不会直接从数据库中物理删除而是使用逻辑删除,@TableLogic(value="0",delval="1")  未删除状态/删除状态

对于数据表中的一些公共字段如创建时间、更新时间,my-batisPlus底层体现了SpringAOP思想,添加注解可以自动填充,如@TableField(fill = FieldFill.INSERT)、@TableField(fill = FieldFill.INSERT_UPDATE),但是需要在配置类中实现MetaObjectHandler方法重写insertFill与updateFill方法。

数据表中没用的多余字段可用@TableField(exist = false)进行标识

02-03 07:56