当前使用版本(必须填写清楚,否则不予处理)

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