MybatisPlus ID生成

195 阅读1分钟

1. ID生成策略

  1. AUTO(0)
    • 数据库ID自增 (该类型请确保数据库设置了 ID自增 否则无效)
  2. NONE(1)
    • 该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
  3. INPUT(2)
    • 用户输入ID (该类型可以通过自己注册自动填充插件进行填充)
  4. /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */
  5. ASSIGN_ID(3)
    • 分配ID (主键类型为number或string
    • 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(雪花算法)
  6. ASSIGN_UUID(4);
    • 分配UUID (主键类型为 string)
    • 默认实现类 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(UUID.replace("-",""))
/**主键*/ 
@TableId(type = IdType.XXX) 
@ApiModelProperty(value = "主键") 
private java.lang.String id;

2. 实体类自动填充

2.1 使用注解

@TableField(fill = FieldFill.DEFAULT) 
private java.util.Date updateTime;

/** * 字段填充策略枚举类 *  
<p> * 判断注入的 insert 和 update 的 sql 脚本是否在对应情况下忽略掉字段的 if 标签生成 
* <if test="...">......</if> * 判断优先级比 {@link FieldStrategy} 高 * </p> *
* @author hubin 
* @since 2017-06-27 */
public enum FieldFill { 
    /** * 默认不处理 */ 
    DEFAULT, 
    /** * 插入时填充字段 */ 
    INSERT, 
    /** * 更新时填充字段 */ 
    UPDATE, 
    /** * 插入和更新时填充字段 */
    INSERT_UPDATE }

2.2 在Handler中填充值

package bai.handler; 
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 
import org.apache.ibatis.reflection.MetaObject; 
import java.util.Date; 
@Component 
public class MyMetaObjectHandler implements MetaObjectHandler { 

    @Override public void insertFill(MetaObject metaObject) { 
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject); 
    } 
    @Override public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject); 
    } 
}