數據字典設計

數據字典功能java

表設計:spring

列名 id type_code type_name code name has_child parent_id disabled
                 

 

 枚舉類設計(項目啓動時,將數據字典保存到了枚舉類內部)注:數據庫的type_code字段就是枚舉類的typeCode字段
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;
    }
}
View Code

 加載數據字典代碼(僅供參考)數據庫

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;
    }
}
View Code

使用數據字典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;
    }
}
View Code

歡迎交流,僅供參考。ide

相關文章
相關標籤/搜索