在 MyBatis Plus 中,@TableId
和 @TableField
有以下区别:
一、@TableId
-
作用:
- 用于标识实体类中的主键字段。MyBatis Plus 通过这个注解来确定哪个字段是表的主键。
-
主要属性:
type
:指定主键生成策略。例如IdType.AUTO
表示由数据库自动生成主键值;IdType.INPUT
表示由用户手动输入主键值等。
-
示例:
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; public class User { @TableId(type = IdType.AUTO) private Long id; // 其他字段... }
二、@TableField
-
作用:
- 用于标识实体类中的非主键字段与数据库表字段的映射关系。可以指定数据库表中的列名、是否为非空字段、是否进行条件查询等属性。
-
主要属性:
exist
:表示该字段是否在数据库表中存在。默认值为true
,如果设置为false
,则在进行数据库操作时会忽略该字段。condition
:用于指定该字段在查询时的条件表达式,例如@TableField(condition = "%s like concat('%',#{value},'%')")
表示进行模糊查询。value
:可以指定数据库表中的列名,如果实体类中的字段名与数据库表中的列名不一致,可以通过这个属性进行映射。
-
示例:
import com.baomidou.mybatisplus.annotation.TableField; public class User { private Long id; @TableField("user_name") private String username; @TableField(value = "age", exist = false) private Integer userAge; // 其他字段... }
综上所述,@TableId
专门用于标识主键字段,而 @TableField
用于处理非主键字段的各种映射和属性设置。