字典數據是什么?
這里說了字典不是軟件工程中說的數據字典。
字典數據:用于動態設置某對象的屬性是屬于在一個可列舉的數據范圍內的某一類型數據,使用字典類型作為該類別屬性的唯一標識
如:用戶類型:學生,老師,家長,校長等
有什么作用?
字典數據由兩個表組成:字典類型表 dict_type,字典類型數據表 dict_data
這個數據相當于java中的枚舉類,可以被使用于前端的數據展示,下拉框數據集使用。
沒有數據字典時業務操作方法:
定義學生枚舉類,在代碼中使用枚舉類的key進行數據保存,在查詢數據后,轉換key對應的中文名稱label標簽返回給前端。
缺點:如新增用戶類型,修改學生類型對應中文名稱時,需要修改代碼。
使用字典時業務操作方法?! ?/p>
后端業務數據存儲的是字典類型的key值,即label標簽表示學生類型對應的key值 student,
新增數據時前端通過下拉菜單獲取學生類型某一個類型key進行新增,查詢數據時根據字典數據表的用戶類型作為下拉框查詢條件選擇。
優點:當key為student的數據中文名稱發生改變時,不需要后端進行代碼修改。
如新增用戶時,設置用戶的類型,下拉框的數據可以從數據庫獲取數據,不用前端關心數據集的內容,
在業務中使用
不使用緩存的方式使用字典數據:
業務中使用方式,返回用戶列表數據,將用戶類型的字典數據從數據庫中查詢出來,然后進行轉換。
在前端查詢數據時,前端查詢用戶類型的下拉數據集,作為條件,傳類型key值作為查詢條件查詢數據。
與緩存搭配使用字典數據。
自己控制數據緩存。靈活性高:Ehcache,Redis等內存緩存框架進行處理。
如果是單機項目??梢允褂脙却婢彺?。
緩存的使用方式有多種:
如使用Mybatis自帶的一級緩存,二級緩存。但如果使用的是不同的SqlSession進行數據查詢,這不會用到一級緩存。
單機項目最好還是使用內存緩存框架,如Ehcache,用Map來存儲所有字典數據。在更新字典數據后,直接整個更新緩存數據。
1
2
3
4
5
6
7
|
{ "字典類型" : [ { "key" : "label" } ] } |
如果是分布式(雖然沒實際用過):可以使用redis這種外置的非關系型數據庫存儲緩存數據。即一個類型一個key來存儲數據。如
RedisUtils.put( "dict:type_user_type" ) RedisUtils.get( "dict:type_user_type" )
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/gne-hwz/p/13644625.html