數據字典功能java
表設計:spring
列名 | id | type_code | type_name | code | name | has_child | parent_id | disabled |
public enum DictionaryTypeEnum { 薪資範圍("薪資範圍", "01", false),學歷("學歷","02", false),部門("部門","03", false); // 成員變量 private String typeName; private String typeCode; private boolean tree; //數據字典 private List<Dictionary> dictionaries = new ArrayList<Dictionary>(); // 構造方法 private DictionaryTypeEnum(String name, String code, boolean tree) { this.typeName = name; this.typeCode = code; this.tree = tree; } //加載數據字典 public void load(List<Dictionary> dictionaries) { //設置只讀 this.dictionaries = Collections.unmodifiableList(dictionaries); } public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } public String getTypeCode() { return typeCode; } public void setTypeCode(String typeCode) { this.typeCode = typeCode; } public boolean isTree() { return tree; } public void setTree(boolean tree) { this.tree = tree; } public List<Dictionary> getDictionaries() { return dictionaries; } }
加載數據字典代碼(僅供參考)數據庫
package cn.tornado.job.service.dictionary.impl; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.tornado.job.mapper.dictionary.DictionaryMapper; import cn.tornado.job.po.dictionary.Dictionary; import cn.tornado.job.service.dictionary.DictionaryService; import cn.tornado.job.util.DictionaryTypeEnum; @Service public class DictionaryServiceImpl implements DictionaryService{ @Autowired private DictionaryMapper dictionaryMapper; @Override public void initDictionaryEnum() throws Exception { List<Dictionary> dictionarys = dictionaryMapper.listByTypeCode(null); this.toTree(dictionarys); //用枚舉存放數據字典 for (DictionaryTypeEnum type : DictionaryTypeEnum.values()) { List<Dictionary> list = new ArrayList<Dictionary>(); for (Dictionary dictionary : dictionarys) { if (type.getTypeCode().equals(dictionary.getTypeCode())){ list.add(dictionary); } } //加載字典 type.load(list); } } /** * <p>Description: 將節點放進父節點 </p> * @param dictionarys * @Author 韓亞華 * @Date 2017-5-16 */ private List<Dictionary> toTree(List<Dictionary> dictionarys) { for (Dictionary dictionary : dictionarys) { if ("-1".equals(dictionary.getParentId())) continue; for (Dictionary parent : dictionarys) { if (dictionary.getParentId().equals(parent.getId())){ if (parent.getChildrens() == null){ List<Dictionary> childrens = new ArrayList<Dictionary>(); parent.setChildrens(childrens); } parent.getChildrens().add(dictionary); break; } } } return dictionarys; } }
使用數據字典utilapp
package cn.tornado.job.util; import java.util.ArrayList; import java.util.List; import cn.tornado.job.po.dictionary.Dictionary; public class DictionaryUtils { /** * <p>Description: 根據數據字典code返回name,如未找到則返回null </p> * @param code 若是code 爲空null則返回null * @Author 韓亞華 * @Date 2017-5-16 */ public static String getName(String code){ if (StringUtils.isEmpty(code)){ return null; } for (DictionaryTypeEnum typeEnum : DictionaryTypeEnum.values()) { for (Dictionary dictionary : typeEnum.getDictionaries()) { if (code.equals(dictionary.getCode())){ return dictionary.getName(); } } } return null; } /** * <p>Description: 根據數據字典code和類別返回name,如未找到則返回null </p> * @param code 若是code 爲空null則返回null * @Author 韓亞華 * @Date 2017-5-16 */ public static String getName(String code,DictionaryTypeEnum typeEnum){ if (StringUtils.isEmpty(code)){ return null; } for (Dictionary dictionary : typeEnum.getDictionaries()) { if (code.equals(dictionary.getCode())){ return dictionary.getName(); } } return null; } /** * <p>Description: 根據字典類型返回返回類型樹,若該類型不是樹返回普通的list </p> * @param typeEnum * @Author 韓亞華 * @Date 2017-5-16 */ public static List<Dictionary> getTrees(DictionaryTypeEnum typeEnum){ if (!typeEnum.isTree()){ return typeEnum.getDictionaries(); } List<Dictionary> trees = new ArrayList<Dictionary>(); for (Dictionary dictionary : typeEnum.getDictionaries()) { if ("-1".equals(dictionary.getParentId())){ trees.add(dictionary); } } return trees; } /** * <p>Description: 根據字典code返回字典元素,若是是樹返回該元素和子樹(未找到則返回null)</p> * @param code 若是爲null或""則返回null * @Author 韓亞華 * @Date 2017-5-16 */ public static Dictionary get(String code){ if (StringUtils.isEmpty(code)){ return null; } for (DictionaryTypeEnum typeEnum : DictionaryTypeEnum.values()) { for (Dictionary dictionary : typeEnum.getDictionaries()) { if (code.equals(dictionary.getCode())){ return dictionary; } } } return null; } /** * <p>Description: 根據字典code和字典類型返回字典元素,若是是樹返回該元素和子樹(未找到則返回null)</p> * @param code 若是爲null或""則返回null * @Author 韓亞華 * @Date 2017-5-16 */ public static Dictionary get(String code, DictionaryTypeEnum typeEnum){ if (StringUtils.isEmpty(code)){ return null; } for (Dictionary dictionary : typeEnum.getDictionaries()) { if (code.equals(dictionary.getCode())){ return dictionary; } } return null; } }
歡迎交流,僅供參考。ide