字典表使用
1.数据库设计
1.字典表就是,对我们项目中的静态下拉框中的数据进行统一的管理,在使用时,需要在字典表中创建四个字段,id、name、parentTop、parentId.
Name:存放的我们的一个名称。
parentTop:判断是否是父级,一般通过1,0判断,如果为1,则为父级。
parentId:判断是属于哪个父级下的。放的是父级的id值。
2.然后查询所有的数据,在service层进行判断。创建两个list集合,第一次for循环通过parentTop查询出所有的父级数据,存放到一个list集合中,第二次for循环通过遍历第一个集合中的内容与数据库查询的所有数据进行对比,将parentId与当前的父级id相同的放到第二个集合中,循环结束后,此集合添加到第一个集合中。进行一个返回,这就我的理解。
1.具体代码
1.controller层
/**
*公共接口
*/
@RestController
@RequestMapping("/metadata")
@Api(value="SwaggerController" ,description="公共接口模块")
@CrossOrigin
public class CommenController {
// 注入
@Autowired
private InquirySheetService inquirySheetService;
// 各种下拉框
@ApiOperation("各种下拉框")
@PostMapping("/getPullDownList")
public ResultVo<SelectDropdownVo> getPullDownList(@RequestBody List<String> lists){
return inquirySheetService.getPullDownList(lists);
}
}
2.service层 --接口实现类
@Service
public class InquirySheetServiceImpl implements InquirySheetService {
@Autowired
private InquirySheetDao inquirySheetDao;
// 各种下拉
@Override
public ResultVo<SelectDropdownVo> getPullDownList(List<String> lists) {
查询所有信息
List<Dictionarie> dicList=inquirySheetDao.queryList();
// // 定义集合
ArrayList<DictionVo> dicVolist=new ArrayList<>();
ArrayList<DictionVo> dicVolist2=new ArrayList<>();
所有父类
for (Dictionarie fatherList:dicList) {
DictionVo dic=new DictionVo();
if (fatherList.getParentTop()==1){
dic.setId(fatherList.getId());
dic.setName(fatherList.getName());
dicVolist.add(dic);
}
}
//
// 父类的子类
for (DictionVo dic2:dicVolist) {
// 存放子级
List<Dictionarie> dicLists=new ArrayList<>();
for (Dictionarie dic3:dicList) {
if (dic2.getId()==dic3.getParentId()){
dicLists.add(dic3);
}
}
dic2.setDicList(dicLists);
dicVolist2.add(dic2);
}
SelectDropdownVo sd=new SelectDropdownVo();//内部放了各种下拉框
for (DictionVo ss:dicVolist2) {
if (ss.getName().equals("type")){
sd.setXjTypeVos(ss);
}
if (ss.getName().equals("inquiryStatus")){
sd.setXjStatusVos(ss);
}
if (ss.getName().equals("isTax")){
sd.setIsTax(ss);
}
if (ss.getName().equals("currencyCode")){
sd.setCurrencyCode(ss);
}
}
return ResultPlsVo.success(sd);
}
}
3.dao层
@Mapper
public interface InquirySheetDao {
// 各种下拉
List<Dictionarie> queryList();
}
4.xml中的sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xyh.inquiry.dao.InquirySheetDao">
<!--
namespace:接口的包路径名称
id:接口中对应的方法名称
resultType:返回的数据类型
parameterType:接收的数据类型
-->
<!-- 各种下拉-->
<select id="queryList" resultType="com.xyh.inquiry.domain.InquirySheet.Dictionarie">
select * from zidian
</select>
</mapper>