学习笔记-数据字典

以上内容只是供自己学习,有不对之处欢迎指出。

数据字典

一、应用场景:

        下拉框的应用场景。

 

存在问题:

        下拉框可以直接通过<select></select>将数据写死,但是不方便数据的增加和修改,如果有新的数据需要重新添加。

        如果用<option th:each="${}">来遍历,你需要去设计新建很多张表,去写很多的crud,如果有几十个或者上百个表格,那么就需要去创建上百张表格,会有很多重复的步骤在里头。

二、如何数据字典通过两张表解决数据问题

dict_data表————字典明细表

dict_ type表————字典目录表

第一个表,具体信息

dict_code:是个主键,有点像id;

dict_sort:是个排序规则;

dict_label:option显示内容th:text;

dict_value:option value值;

dict_type:用来和字典目录关联的字段;

remark:备注

第二个表具体信息

dict_id :主键

dict_name:目录名称

dict_type:目录类型

remark:备注

这两个表将用于解决以上问题。:

例题:

 

 如何实现以下图片的功能:

 

第一步:实现数据下拉框的显示:

pubilc String input(Model model){
    List<SysDictData> schools = sysDictDataService.queryByType("schoolType");
    List<SysDictData> sources= sysDictDataService.queryByType("sourceType");
//获取数据字典的数值,然后传入到对应页面;
    model.addAttribute("schools",schools);
    model.addAttribute("sources",sources);
    return"customer/input"
}
<select>

        <option th:each=school:${schools} th:text=${school.name} th:value = ${school.id}>

</select>

<select>

        <option th:each=school:${schools} th:text=${school.name} th:value = ${school.id}>

</select>

通过对应的schooltype就可以找到对应的学校的具体信息,来源也是一样。

第二步:实现数据的显示

例如:

 要实现数据的显示,需要将多个表进行连表查询。

在mysql当中实现对应的sql语句查询的出对应的数据

SELECT c.*,school.dict_label,source.dict_label 
FROM t_customer c 
LEFT JOIN sys_dict_data school ON (
c.school_value = school.dict_value
AND school.dict_type = 'schoolType'
)
LEFT JOIN sys_dict_data source ON (
c.source_value = source.dict_value
ANd source.dict_type = 'sourceType'
)

 取得数据之后再对应界面数据对应的信息即可


版权声明:本文为weixin_48438598原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。