当前使用版本(必须填写清楚,否则不予处理)
3.2.0
以下只是建议的方式,因为在之前的项目中有个痛点,就是频繁的去关联字典表查询对应的value给视图层,所以希望新增注解类解决
新增一个字典的类
/**
* 定义一个字典相关的类
* @author yu_chen
* @date 2019/11/20 13:48
*/
@Data
public class Dict {
private String key;
private String value;
}
新增一个字典关联的注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DictField {
/**
* eg : nation
*
* @return 当前字段对应的表的列
*/
String currentTableColumn();
/**
* 关联的表名
*/
String relateTableName();
/**
* 关联的表的列键值
*/
String relateTableColumnKey();
/**
* 关联的表的列值
*/
String relateTableColumnValue();
}
具体的使用
@Data
@TableName("student")
public class Student {
/**
* 学生姓名
*/
private String name;
/**
* 学生年龄
*/
private String age;
/**
* 学生的民族
*/
@DictField(currentTableColumn = "nation",
relateTableName = "eims_dict",
relateTableColumnKey = "code_key",
relateTableColumnValue = "code_value")
private Dict studentNation;
}
在查询的时候自动的将字典对应的值查询出来
可以在mybatis-plus查询解析sql的时候将字典的查询带入并将结果注入到Dict的类中。
实现的效果
Student student=studentService.selectById(123);
//在使用此查询或者类似的列表查询时可以将关联的字典类给查出
前端使用:
#{student.studentNation.key}
#{student.studentNation.value}
Comment From: qmdx
多表请 xml 解决,如果注解解决那么为什么不用 hibernate
Comment From: ChenYuDream
因为 有很多地方都只是一个基本的查询 selectById,selectList,selectAll这种,而且字典字段毕竟是少数,如果这样基础的还要去写关联,就感觉失去了极简的意义
Comment From: ChenYuDream
不使用hibernate是因为还是有很多复杂的sql需要写在xml中
Comment From: gstripe
https://gitee.com/dibo_software/diboot-v2