Appearance
字段权限
字段权限,指的是在一张表中设计了许多字段,但是不同的用户(或者角色)查询,返回的字段结果是不一致的。 比如:tb_account 表中,有 user_name 和 password 字段,但是 password 字段只允许用户本人查询, 或者超级管理员查询,这种场景下,我们会用到 字段权限 的功能。
在 @Table()
注解中,有一个配置名为 onSet
,用于设置这张表的 设置
监听,这里的 设置
监听指的是: 当我们使用 sql 、调用某个方法去查询数据,得到的数据内容映射到 entity 实体,mybatis 通过 setter 方法去设置 entity 的值时的监听。
以下是示例:
step 1: 为实体类编写一个 set 监听器(SetListener
)
java
public class AccountOnSetListener implements SetListener {
@Override
public Object onSet(Object entity, String property, Object value) {
if (property.equals("password")){
//去查询当前用户的权限
boolean hasPasswordPermission = getPermission();
//若没有权限,则把数据库查询到的 password 内容修改为 null
if (!hasPasswordPermission){
value = null;
}
}
return value;
}
}
step 2: 为实体类配置 onSet
监听
java
@Table(value = "tb_account", onSet = AccountOnSetListener.class)
public class Account {
@Id(keyType = KeyType.Auto)
private Long id;
private String userName;
private String password;
//getter setter
}
更多的 onSet
还可以参考 这里。