java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @TableField(updateStrategy=FieldStrategy.IGNORED)

使用@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑记录

作者:易不易

这篇文章主要介绍了使用@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

@TableField(updateStrategy=FieldStrategy.IGNORED)遇到的坑

@TableField(updateStrategy = FieldStrategy.IGNORED)
private String phoneNo;

因为联系人手机号码可以修改为空值,所以加@TableField(updateStrategy = FieldStrategy.IGNORED)注解,可以让phoneNo为空的时候用MP更新数据库是不会忽略此字段。

后来我在修改该对象其他属性时,没有设置phoneNo的值,更新时发现phoneNo就被更新为空。所以为了避免此情况我不得重新查询该字段值再赋值一遍。

切记用此注解需谨慎!!!

注解 @TableField 的使用笔记

@TableField 是一个注解,用于标识实体类中的字段映射关系。它是 MyBatis-Plus 框架提供的注解之一,用于与数据库表字段进行映射。

在使用 MyBatis-Plus 进行数据库操作时,我们可以通过 @TableField 注解来指定实体类中的字段与数据库表中的字段之间的映射关系。该注解可以用于类的成员变量上,也可以用于类的方法上。

常见的@TableField注解参数包括

public class User {
    @TableField("user_name")
    private String userName;

    @TableField(value = "age", exist = false)
    private Integer age;

    // getter and setter
}

上述代码中,userName 字段与数据库表字段 user_name 进行映射,而 age 字段并不是数据库表字段。

另外:

@TableName注解,value值指定对应的表名。

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_user")
public class User {
    private Long id;
    private String name;

}

@TableId注解:MyBatisPlus在实现CRUD默认会将Id作为主键,在插入数据时,使用雪花算法生成Id,如果主键不叫Id则添加功能会失败。

所以@TableId有下列用法:

@TableId(value = “uid”) //value指定当前作为主键的字段
@TableId(value = “id”,type = IdType.AUTO) //将当前属性所对应的字段作为主键
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_user")
public class User {
    @TableId
    private Long id;
    private String name;

}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文