以上内容只是供自己学习,有不对之处欢迎指出。
数据字典
一、应用场景:
下拉框的应用场景。
存在问题:
下拉框可以直接通过<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版权协议,转载请附上原文出处链接和本声明。


