一 需求分析
1 分析
在项目中会有很多的下拉框,这些下拉框的特点,就是以键值对的形式存在,其中 value(如 id:1,2… ),key(展示给用户的内容),数据库中可通过 value 寻找对应的 key,对于固定的内容可使用数据字典形式进行填写,防止出错。
实现方案:
1.直接硬编码写在html代码中(升级复杂,维护困难)
2.为每个下拉框都设计一个表,然后提供CRUD功能(表单中下拉框很多,内容相似,没必要每个都配,只特殊情况下使用)
3.使用数据字典的方式(维护项目中所有的下拉列表)
二 表设计
1 概述
sys_dict_type 中主要存储项目中有哪些下拉框,sys_dict_data 中主要存储项目中下拉框对应的option的具体内容,两张表通过 dict_type 进行关联,查询时可通过下拉框名称“性别”于 sys_dict_type 表中搜索 dict_name 为“性别”的记录的 dict_type 字段,通过该字段到 sys_dict_data 表中获取需要展示的 key(dict_value) 与 value(dict_label),通过 dict_sort 可对下拉框中内容进行排序,如:
2 字典类型表 sys_dict_type
所有程序中的select,该表中 dict_type 需唯一
字段 | 描述 |
dict_id | 主键 |
dict_name | 字典名称(例:性别) |
dict_type | 字典类型(例:sex) |
remark | 备注(例:性别) |
3 字典数据表 sys_dict_data
所有程序中的select所对应的option,例:< option value=“1”>女< /option>,其中键值为1,标签为女
字段 | 描述 |
dict_code | 主键 |
dict_type | 字典类型 |
dict_label | 字典标签(例:女) |
dict_value | 字典键值(例:1) |
dict_sort | 字典排序(对下拉列表数据进行排序) |
remark | 备注 |
4 客户表 t_customer
客户表中存储 source_value 与 school_value 通过关联上表,获取所需的数据,建议使用左连接防止由于字段NULL时查询丢失数据
字段 | 描述 |
id | 主键 |
name | 客户名称 |
phone | 联系方式 |
source_value | 常住地 |
school_value | 最高学历 |
三 项目搭建
1 pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.tj</groupId>
<artifactId>sys-dict-demo</artifactId>
<version>1.0.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.13.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<druid.version>1.2.6</druid.version>
<mybatis-spring-boot.version>2.1.4</mybatis-spring-boot.version>
<fastjson.version>1.2.76</fastjson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot集成thymeleaf模板 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${
druid.version}</version>
</dependency>
<!-- SpringBoot集成mybatis框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${