在 MyBatis Plus 中,注解用于简化实体类与数据库表之间的映射关系。以下是 @TableName
、@TableId
和 @TableField
注解的使用场景和详细说明:
1. @TableName
使用场景
当实体类的类名与数据库表名不一致时,可以使用 @TableName
注解指定实体类对应的数据库表名。
示例
假设有一个实体类 UserInfo
,但数据库中对应的表名为 user_detail
,可以使用 @TableName
注解进行映射:
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("user_detail")
public class UserInfo {
// 字段和方法
}
2. @TableId
使用场景
当实体类的主键字段与数据库表的主键字段不一致,或者需要指定主键生成策略时,可以使用 @TableId
注解。
示例
假设有一个实体类 UserInfo
,主键字段为 userId
,但数据库表的主键字段为 id
,并且希望使用数据库自增主键:
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class UserInfo {
@TableId(value = "id", type = IdType.AUTO)
private Long userId;
// 其他字段和方法
}
3. @TableField
使用场景
当实体类的字段名与数据库表的字段名不一致,或者需要指定字段的某些特殊属性(如字段填充策略、是否为数据库字段等)时,可以使用 @TableField
注解。
示例
假设有一个实体类 UserInfo
,字段 userName
对应数据库表的字段为 user_name
,并且希望在插入和更新时自动填充该字段:
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.FieldFill;
public class UserInfo {
@TableField(value = "user_name", fill = FieldFill.INSERT_UPDATE)
private String userName;
// 其他字段和方法
}
综合示例
以下是一个综合示例,展示了如何使用 @TableName
、@TableId
和 @TableField
注解:
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.FieldFill;
@TableName("user_detail")
public class UserInfo {
@TableId(value = "id", type = IdType.AUTO)
private Long userId;
@TableField(value = "user_name", fill = FieldFill.INSERT_UPDATE)
private String userName;
@TableField("age")
private Integer age;
@TableField("email")
private String email;
// getters and setters
}
总结
@TableName
用于指定实体类对应的数据库表名。@TableId
用于指定实体类的主键字段,并可以设置主键生成策略。@TableField
用于指定实体类字段与数据库表字段的映射关系,并可以设置字段的特殊属性。
通过使用这些注解,开发者可以更灵活地进行实体类与数据库表之间的映射,从而简化开发过程,提高开发效率。MyBatis Plus 是一个功能强大且易于使用的 MyBatis 增强工具,适用于各种规模的 Java Web 项目。