介绍
zzy-field-proxy是一个字典自动翻译工具,支持多种数据类型,可以指定bean中有的字段,也可以自动生成bean中不存在的字段。 它支持多种获取字典数据源的方式,包括:sql、枚举、远程调用。如果这些不能满足你的需求,那么zzy-field-proxy也提供相应的接口帮助你自定义字典数据的获取。
使用效果
-
数据库数据
-
实体类
@TableName("sys_user")
@Data
public class User {
@FieldProxy(meta = Constants.ROLE_SQL, returnKey = "user_id", fieldName = "rolesName", type = List.class, isMultiValue = true)
private Long id;
@FieldProxy(meta = Constants.SEX_SQL_FiELD_NO_EXIST, returnKey = "code", selectKey = "sssssex", dataKey = {"kkkex"}, fieldName = "sexName")
private String name;
private String sex;
@FieldProxy(meta = Constants.ORG_SQL, returnKey = "id", isMultiValue = true, fieldName = "orgIdsNameString")
private String orgIds;
@FieldProxy(meta = Constants.SEX_SQL, returnKey = "code", selectKey = "sex", dataKey = {"sex"})
@TableField(exist = false)
private String sexName;
@FieldProxy(meta = Constants.SEX_ALL_SQL, returnKey = "code", dataKey = {"sex"}, fieldName = "virtualField")
@TableField(exist = false)
private String virtualField;
@FieldProxy(meta = "com.zzy.example.enums.Address", returnKey = "key", selectKey = "value", executeType = "enum")
private Integer address;
@FieldProxy(meta = "com.zzy.example.enums.Post", returnKey = "name", selectKey = "level", executeType = "enum")
private String post;
@FieldProxy(meta = "http://localhost:8080/dic/get", dicKey = "ROLE_TYPE", fieldName = "roleNames", isMultiValue = true, executeType = "remote")
@TableField(exist = false)
private List<Long> roleIds;
public String getSssssex() {
return this.sex;
}
public String getKkkex() {
return this.sex;
}
}
public interface Constants {
String ROLE_SQL = "select sur.user_id, sr.role_name from sys_user_role sur, sys_role sr where sur.user_id = #{id} and sur.role_id = sr.id";
String SEX_SQL = "select sd.code, sd.name from sys_dic sd where sd.code = #{sex} ";
String SEX_SQL_FiELD_NO_EXIST = "select sd.code, sd.name from sys_dic sd where sd.code = #{sssssex} ";
String ORG_SQL = " select so.id, so.name from sys_org so where so.id = #{orgIds} ";
String SEX_ALL_SQL = " select code, name from sys_dic ";
}
- 翻译结果
这里只截取其中的一个对象进行展示
[
{
"id": 1,
"name": "name1",
"sex": "001",
"orgIds": "1,2",
"sexName": "男",
"virtualField": "男",
"address": 1,
"post": "L1",
"roleIds": [
1,
4,
7
],
"rolesName": [
"role1",
"role4",
"role7"
],
"addressName": "A大道",
"sexNameName": "男",
"roleNames": "role1,role4,role7",
"postName": "职位1号",
"orgIdsNameString": "公司1,公司2",
"kkkex": "001",
"sssssex": "001"
}
]