@TableName与@TableField的区别
时间: 2024-04-09 08:24:36 浏览: 107
@TableName和@TableField是MyBatis-Plus框架中的注解,用于实现对象与数据库表之间的映射关系。
@TableName注解用于标识实体类对应的数据库表名。通过在实体类上添加@TableName注解,并指定对应的表名,可以实现实体类与数据库表的映射关系。
@TableField注解用于标识实体类中的字段与数据库表中的列之间的映射关系。通过在实体类的字段上添加@TableField注解,并指定对应的列名,可以实现字段与列的映射关系。
区别:
1. @TableName注解用于标识整个实体类与数据库表之间的映射关系,而@TableField注解用于标识实体类中的字段与数据库表中的列之间的映射关系。
2. @TableName注解只需要在实体类上添加一次,而@TableField注解需要在每个字段上添加。
3. @TableName注解只需要指定表名,而@TableField注解需要指定列名。
相关问题
@TableName必须配合@TableField 使用么
@TableName注解不一定需要配合@TableField注解使用。@TableName注解用于指定实体类对应的数据库表名,而@TableField注解用于指定实体类中字段与数据库表中字段的映射关系。如果实体类中的字段与数据库表中的字段名称一致,可以不使用@TableField注解。但是如果实体类中的字段与数据库表中的字段名称不一致,就需要使用@TableField注解来指定映射关系。
以下是一个示例:
```java
@TableName("user")
public class User {
private Long id;
@TableField("user_name")
private String username;
// 省略其他字段和方法
}
```
在上面的示例中,@TableName注解指定了实体类User对应的数据库表名为"user",而@TableField注解指定了实体类中的username字段与数据库表中的"user_name"字段的映射关系。
@TableName @TableId @TableField三个注解的作用和
@TableName、@TableId和@TableField是MyBatis-Plus框架中的注解,用于简化数据库操作。它们的作用分别如下:
1. @TableName:用于指定实体类对应的数据库表名。如果实体类名和表名不一致,可以使用该注解指定表名。
2. @TableId:用于指定实体类中的属性作为主键。可以指定主键类型、主键生成策略等。
3. @TableField:用于指定实体类中的属性对应的数据库字段。可以指定字段名、是否为主键、是否为自增长、是否为插入时填充字段等。
以下是一个使用这三个注解的示例:
```java
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("name")
private String username;
private String password;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
```
上述代码中,@TableName注解指定了实体类对应的表名为"user",@TableId注解指定了id属性为主键,并且使用了自增长策略,@TableField注解指定了username属性对应的数据库字段名为"name",createTime属性为插入时填充字段,updateTime属性为插入和更新时都填充字段。
阅读全文