Mybatis-Plus总结
创建
1.创建自己的Mapper接口继承BaseMapper接口,如果有其他特定需求也可以在这个mapper中添加。直接在server层注入这个mapper就可以调用里面封装的增删改查方法。
插入
2.关于主键,可以使用@TableId(Type = IdType.(一种主键策略)) 。其中AssignId比较常用,是按雪花算法生成一个唯一的19位值,里面有用时间戳。
修改
3.最基本的就是用Mapper.updateById(id)。
4.对于一些类似时间日期这样可以通过自动填充赋值的可以在实体类字段上加@TableField(fill = FieldFill.Insert)实现。
5.实现MetaObjectHandler接口,在里面的方法中设置属性值。这个方法主要就是在我们server中对相应类的字段进行数据库删改操作时自动执行里面操作,有点AOP的味道。就是把那些每次在删改操作中都要执行自动填充的操作可以写在这,虽然写在server中也行,可能这样分个类会好点?
6.乐观锁 (1)给数据库添加一个版本号属性,在这个属性上添加@version自断标注。 (2)配置乐观锁插件;创建一个配置类(@configuration,@MapperScan(全类名))
查询
7.通过多个id批量查询
8.简单的条件查询:用map构建条件,传入函数。 (1)第一种实现方式:
9.分页查询
(1)引入插件配置到配置类
(2)new一个Page类,把当前也和每页记录数作为构造参数,构造Page类,把这个page作为selectPage方法参数传入获得每页查出的相关数据;如下:
删除
10.基本删除 根据id删除:int row = mapper.deleteId(id); 批量删除:传入一个集合,根据多个id删除。int row = maper.deleteBatchIds(list); 条件删除,构建条件作为deleteByMap(map)参数;
11.逻辑删除
(1)在数据库和实体类中添加逻辑删除标志字段,并添加注解@TableLogic,可以再加个初始值用于自动填充,也同样可以加到前面handler类中。
(2)直接在server中正常运行删除操作,会自动修改标志位值,而不删除记录。
常用补充
Wrapper:SQL查询的条件构造器,可以作为mapper中很多查询函数的条件参数。 一般使用QueryWrapper;
构造wrapper中条件的方法有: