一、@TableId注解的用途
MybatisPlus是基于Mybatis的增强工具,提供了很多便捷的注解和方法。@TableId注解是其中的一个。它的作用是标注实体类的主键字段,并且可以指定主键策略。如果实体类没有声明主键字段,MybatisPlus会自动识别实体类中的名为"id"的字段为主键。示例代码如下:
@Data @TableName("user") public class User { @TableId(value = "user_id", type = IdType.AUTO) private Integer userId; private String name; private Integer age; private String email; // 省略getter和setter }
上面的代码中,@TableId注解标注在userId字段上,指定主键名为"user_id",并且指定自增主键策略,即IdType.AUTO。
二、@TableField注解的用途
除了主键字段,实体类还有其他的字段需要映射到数据库表中。@TableField注解的作用就是标注和数据库表字段的对应关系。示例代码如下:
@Data @TableName("user") public class User { @TableId(value = "user_id", type = IdType.AUTO) private Integer userId; @TableField("user_name") private String name; private Integer age; private String email; // 省略getter和setter }
上面的代码中,@TableField注解标注在name字段上,指定实体类中的名字为"name",但是对应的数据库表中的字段名为"user_name"。
三、联合主键注解的用途
在实际的业务场景中,某些表的主键可能不只一个字段。这时,就需要用到MybatisPlus的联合主键注解。@TableId注解可以用在联合主键上,但是需要指定type属性为IdType.INPUT,然后在实体类中声明多个主键字段,用@TableField指定每个字段对应的数据库表中的字段名。示例代码如下:
@Data @TableName("user") public class User { @TableId(value = "user_id", type = IdType.INPUT) @TableField("user_id") private Integer userId; @TableId(value = "product_id", type = IdType.INPUT) @TableField("product_id") private Integer productId; private String name; private Integer age; private String email; // 省略getter和setter }
上面的代码中,@TableId注解标注在userId和productId字段上,指定主键名和数据库表字段名都为"user_id"和"product_id"。
四、多个联合主键注解的用途
有时候,联合主键并不是只有两个字段,可能有三个或者更多的字段。MybatisPlus同样支持这种情况,只需要在实体类中声明多个主键字段,并且在每个字段上面标注@TableId注解和@TableField注解。示例代码如下:
@Data @TableName("order") public class Order { @TableId(value = "order_id", type = IdType.INPUT) @TableField("order_id") private Integer orderId; @TableId(value = "product_id", type = IdType.INPUT) @TableField("product_id") private Integer productId; @TableId(value = "user_id", type = IdType.INPUT) @TableField("user_id") private Integer userId; private Double price; private Integer quantity; // 省略getter和setter }
上面的代码中,@TableId注解标注在orderId、productId和userId字段上,指定主键名和数据库表字段名都为"order_id"、"product_id"和"user_id"。
五、总结
MybatisPlus的联合主键注解可以很方便地处理多个字段组成的主键。@TableId注解用于标注主键字段,可以指定主键名和主键策略;@TableField注解用于标注普通字段,可以指定字段名和字段类型。在使用联合主键注解时,需要在每个主键字段上面都加上@TableId注解和@TableField注解,非常灵活。