PutValue 注解 VO注入动态值
说明
PutValue 是VO注解,不能应用在实体类上,用于根据N列注入一个动态值的场景;此注解会根据值,method,factory做session级的缓存,请注意!
属性说明
属性 | 是否可空 | 默认值 | 说明 |
---|---|---|---|
source | 否 | 来源,对应的实体类 | |
property | 否 | 对应的实体类的字段名 | |
storey | 是 | 1 | 存储层级,联表自己join自己时使用,一般不用管 |
factory | 否 | 目标类 需要实现 指定getValueMethod名字的静态方法 | |
method | 否 | 指定在factory里获取值的方法 | |
required | 否 | false | 是否必须,true时,找不到对应的枚举会报错 |
defaultValue | 是 | 找不到时,默认值 |
如何用?
java
@Data
@ResultEntity(SysUser.class)
public class SysUserVo {
private Integer id;
private String userName;
private String password;
private Integer status;
@PutValue(source = SysUser.class, property = "id", factory = GetPutValueFactory.class, method = "getStatusName")
private String statusName;
}
java
public enum StatusEnum {
ENABLE(1,"正常"),UNABLE(0,"禁用");
private final Integer code;
private final String name;
StatusEnum(Integer code,String name){
this.code= code;
this.name=name;
}
}
java
public class GetPutValueFactory {
public static String getStatusName(Integer code) {
Optional<StatusEnum> e = Arrays.stream(StatusEnum.values())
.filter(item -> item.getCode().equals(code))
.findFirst();
return e.map(PutValueEnum::getName).orElse(null);
}
}
java
@Service
public class Test{
@Autowired
private SysUserMapper sysUserMapper;
public void demo() {
Pager<SysUserVo> pager = QueryChain.of(sysUserMapper)
.eq(SysUser::getId,1)
.like(SysUser::getUserName,"xxx")
.returnType(SysUserVo.class)
.paging(Pager.of(1,10));
}
}
框架自动帮你 注入StatusEnum枚举对应的name名字