Mybatis plus注解@TableField详解
目录
- 1. 前言
- 2. 应用场景
- 2.1 更新null值
- 2.2 查询时排除字段
- 2.3 非数据库字段属性
1. 前言
@TableField 字段注解,该注解用于标识非主键的字段。将数据库列与 JavaBean 中的属性进行映射。
2. 应用场景
2.1 更新null值
想要在更新字段时把null值更新到数据库时,加如下注解:
@TableField(updateStrategy= FieldStrategy.IGNORED)
private String useNature;
解说:
由于Mybatis plus默认的更新策略是NOT_NULL:非 NULL;即通过接口更新数据时数据为NULL值时将不更新进数据库。所以Mybatis plus通过updateById(XXX)更新数据,当用户有更新字段为空字符串或者 null 的需求时,需要对 FieldStrategy 策略进行调整。
FieldStrategy 有三种策略:
IGNORED:0 忽略
NOT_NULL:1 非 NULL,默认策略
NOT_EMPTY:2 非空
2.2 查询时排除字段
想要在查询库表映射时不返回指定字段给前端,加如下注解:
@TableField(select = false)
private String genderName;
注意:
应用在逻辑删除字段时可能会失效,比如:
@TableField(select = false)
private Boolean isDeleted;
解决:
加限定条件,如下,
List<User> userList = userMapper.mySelectList(Wrappers.<User>lambdaQuery()
.gt(User::getAge,1).eq(User::getIsDeleted,0));
2.3 非数据库字段属性
想要在实体类映射插入库表时排除到指定字段,加如下注解:
@TableField(exist = false)
private List<SysRole> roles;