MyBatis-Plus 是基于 MyBatis 的增强工具,提供了一些方便的功能,其中之一就是主键策略。主键策略用于生成和处理数据库表的主键值。MyBatis-Plus 支持多种主键策略,下面是一些常用的主键策略及其用法:

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