一、注解的使用
1. 主键策略
1.1 源代码
package com.baomidou.mybatisplus.annotation;
public enum IdType {
AUTO(0),
NONE(1),
INPUT(2),
ASSIGN_ID(3),
ASSIGN_UUID(4);
private final int key;
private IdType(int key) {
this.key = key;
}
public int getKey() {
return this.key;
}
}
1.2 使用
- 通过@TableId注解的 类型属性来设置主键id的增长策略
@TableId(type = IdType.ASSIGN_UUID)
- 假设我们希望完全全部都使用AUTO策略(数据库ID自增),那么可以在 application.properties中添加如下配置进行修改:
mybatis-plus.global-config.db-config.id-type=auto
1.3 详解
-
ASSIGN_ID(雪花算法)
如果不设置类型值,默认则使用IdType.ASSIGN_ID策略
(自3.3.0起)。该策略会使用雪花算法自动生成主键ID,主键类型为长或字符串(分别对应的MySQL的表字段为BIGINT和VARCHAR) -
ASSIGN_UUID(排除中划线的UUID)
如果使用IdType.ASSIGN_UUID策略,并重新自动生成排除中划线的UUID作为主键。主键类型为String,对应MySQL的表分段为VARCHAR(32) -
AUTO(数据库ID自增)
对于像MySQL这样的支持主键自动递增的数据库,我们可以使用IdType.AUTO策略。 -
INPUT(插入前自行设置主键值)
详见:https://www.cnblogs.com/mark5/p/14268122.html -
NONE(无状态)
2. @Select
将SQL直接注解写在接口上 。 这种方式的优点是对于需求比较简单的系统,效率较高。 缺点是:当SQL有变化时都需要重新编译代码。
使用案例:
@Select("select t.* from hr_recruit_apply t ${filter} ${order} limit #{current},#{size}")
public List<RecruitApply> selectCustomPage( @Param("filter") String filter, @Param("order") String order, @Param("current") long current, @Param("size") long size);
3. @TableLogic(delval = “1”, value = “0”)
在属性字段上加@TableLogic注解,使用MyBatis-Plus自带方法删除(在执行BaseMapper的删除方法时,删除方法会变成修改)和查找都会附带逻辑删除功能 (自己写的xml不会)。
加@TableLogic的情况:执行update user set deleted=1 where id =1 and deleted=0。
不加@TableLogic的情况:执行delete from user where deleted=0。
@TableLogic注解参数:value = “” 默认的原值,delval = “” 删除后的值。
@TableLogic(value=“原值”,delval=“改值”)
4. @TableField(updateStrategy = FieldStrategy.IGNORED)
参考
注意:该注解只对使用 Mybatis-Plus ORM 框架进行数据库操作的场景起作用,对于其他框架或原生 SQL 操作无效。