snowflake是Twitter开源的分布式ID生成算法,结果是一个ong型的ID。其核心思想是∶使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID ),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0。
所在包import com.baomidou.mybatisplus.core.toolkit.IdWorker;
package com.jt.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value="t_user") //当表名与实体类的驼峰命名不对应时使用
public class User implements Serializable {
@TableId(type = IdType.NONE) //使用注解雪花算法生成id
private Long id;
private String name;
private Integer age;
private String email;
@TableField(exist = false)//表示该属性不为数据库表字段,但又是必须使用的
private String height;
@TableLogic(value="原值:false",delval="改值:ture") //逻辑删除
private Boolean del;
@TableField(fill = FieldFill.INSERT) // 新增的时候填充数据
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) // 新增或修改的时候填充数据
private Date updateTime;
}
1.在调用BaseMapper的deleteById(id)或者调用IService的removeById(id)时,如果在实体类属性上加
@TableLogic(value=false,delval=true),不会真正去删除数据,而是执行更新操作
SQL:Update table set isDelete = true where id = xxxxxxx
2.注意其中注解@TableField(fill = FieldFill.INSERT)需要做配置,否则不能自动填充,结果为null
可以参考:https://blog.csdn.net/dj1955/article/details/122301529?spm=1001.2014.3001.5502