1. 自增主键策略(@TableId(type = IdType.AUTO)):
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class User {
@TableId(type = IdType.AUTO)
private Long id;
// 其他字段...
}
在这种策略下,数据库会自动生成主键值。需要注意的是,不同数据库的实现方式可能不同,一般在MySQL中使用AUTO_INCREMENT,而在其他数据库中可能有不同的机制。
2. 手动输入主键值(@TableId(type = IdType.INPUT)):
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class User {
@TableId(type = IdType.INPUT)
private Long id;
// 其他字段...
}
在这种策略下,主键值由开发者手动输入,而不是由数据库生成。
3. 全局唯一ID(雪花算法)主键策略(@TableId(type = IdType.ASSIGN_ID)):
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class User {
@TableId(type = IdType.ASSIGN_ID)
private Long id;
// 其他字段...
}
使用雪花算法生成全局唯一的ID。
4. 全局唯一字符串主键策略(@TableId(type = IdType.ASSIGN_UUID)):
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class User {
@TableId(type = IdType.ASSIGN_UUID)
private String id;
// 其他字段...
}
使用UUID生成全局唯一的字符串ID。
5. 使用雪花算法生成分布式ID(@TableId(type = IdType.ID_WORKER)):
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class User {
@TableId(type = IdType.ID_WORKER)
private Long id;
// 其他字段...
}
使用雪花算法生成分布式环境下的全局唯一ID。
这些主键策略可以根据具体的业务需求进行选择,使用 @TableId 注解来标注实体类中的主键字段。 MyBatis-Plus 会根据配置自动处理主键的生成和填充。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7056/MyBatis