JAVA項(xiàng)目字典與緩存搭配使用方法解析
字典數(shù)據(jù)是什么?
這里說(shuō)了字典不是軟件工程中說(shuō)的數(shù)據(jù)字典。
字典數(shù)據(jù):用于動(dòng)態(tài)設(shè)置某對(duì)象的屬性是屬于在一個(gè)可列舉的數(shù)據(jù)范圍內(nèi)的某一類(lèi)型數(shù)據(jù),使用字典類(lèi)型作為該類(lèi)別屬性的唯一標(biāo)識(shí)
如:用戶類(lèi)型:學(xué)生,老師,家長(zhǎng),校長(zhǎng)等
有什么作用?
字典數(shù)據(jù)由兩個(gè)表組成:字典類(lèi)型表 dict_type,字典類(lèi)型數(shù)據(jù)表 dict_data
這個(gè)數(shù)據(jù)相當(dāng)于java中的枚舉類(lèi),可以被使用于前端的數(shù)據(jù)展示,下拉框數(shù)據(jù)集使用。
沒(méi)有數(shù)據(jù)字典時(shí)業(yè)務(wù)操作方法:
定義學(xué)生枚舉類(lèi),在代碼中使用枚舉類(lèi)的key進(jìn)行數(shù)據(jù)保存,在查詢數(shù)據(jù)后,轉(zhuǎn)換key對(duì)應(yīng)的中文名稱label標(biāo)簽返回給前端。
缺點(diǎn):如新增用戶類(lèi)型,修改學(xué)生類(lèi)型對(duì)應(yīng)中文名稱時(shí),需要修改代碼。
使用字典時(shí)業(yè)務(wù)操作方法?! ?/p>
后端業(yè)務(wù)數(shù)據(jù)存儲(chǔ)的是字典類(lèi)型的key值,即label標(biāo)簽表示學(xué)生類(lèi)型對(duì)應(yīng)的key值 student,
新增數(shù)據(jù)時(shí)前端通過(guò)下拉菜單獲取學(xué)生類(lèi)型某一個(gè)類(lèi)型key進(jìn)行新增,查詢數(shù)據(jù)時(shí)根據(jù)字典數(shù)據(jù)表的用戶類(lèi)型作為下拉框查詢條件選擇。
優(yōu)點(diǎn):當(dāng)key為student的數(shù)據(jù)中文名稱發(fā)生改變時(shí),不需要后端進(jìn)行代碼修改。
如新增用戶時(shí),設(shè)置用戶的類(lèi)型,下拉框的數(shù)據(jù)可以從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),不用前端關(guān)心數(shù)據(jù)集的內(nèi)容,
在業(yè)務(wù)中使用
不使用緩存的方式使用字典數(shù)據(jù):
業(yè)務(wù)中使用方式,返回用戶列表數(shù)據(jù),將用戶類(lèi)型的字典數(shù)據(jù)從數(shù)據(jù)庫(kù)中查詢出來(lái),然后進(jìn)行轉(zhuǎn)換。
在前端查詢數(shù)據(jù)時(shí),前端查詢用戶類(lèi)型的下拉數(shù)據(jù)集,作為條件,傳類(lèi)型key值作為查詢條件查詢數(shù)據(jù)。
與緩存搭配使用字典數(shù)據(jù)。
自己控制數(shù)據(jù)緩存。靈活性高:Ehcache,Redis等內(nèi)存緩存框架進(jìn)行處理。
如果是單機(jī)項(xiàng)目。可以使用內(nèi)存緩存。
緩存的使用方式有多種:
如使用Mybatis自帶的一級(jí)緩存,二級(jí)緩存。但如果使用的是不同的SqlSession進(jìn)行數(shù)據(jù)查詢,這不會(huì)用到一級(jí)緩存。
單機(jī)項(xiàng)目最好還是使用內(nèi)存緩存框架,如Ehcache,用Map來(lái)存儲(chǔ)所有字典數(shù)據(jù)。在更新字典數(shù)據(jù)后,直接整個(gè)更新緩存數(shù)據(jù)。
{
"字典類(lèi)型": [
{
"key": "label"
}
]
}
如果是分布式(雖然沒(méi)實(shí)際用過(guò)):可以使用redis這種外置的非關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)緩存數(shù)據(jù)。即一個(gè)類(lèi)型一個(gè)key來(lái)存儲(chǔ)數(shù)據(jù)。如
RedisUtils.put( "dict:type_user_type" ) RedisUtils.get( "dict:type_user_type" )
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot自定義配置項(xiàng)過(guò)程
在SpringBoot項(xiàng)目中,通過(guò)在application.properties文件中添加配置項(xiàng),然后使用@ConfigurationProperties注解將這些配置項(xiàng)與實(shí)體Bean進(jìn)行綁定,可以實(shí)現(xiàn)配置項(xiàng)與實(shí)體類(lèi)字段的自動(dòng)關(guān)聯(lián),進(jìn)而方便地讀取配置文件中的數(shù)據(jù),這種方法不僅簡(jiǎn)化了配置管理2024-11-11
alibaba?seata服務(wù)端具體實(shí)現(xiàn)
seata是來(lái)處理分布式服務(wù)之間互相調(diào)用的事務(wù)問(wèn)題,本文重點(diǎn)給大家介紹alibaba-seata實(shí)現(xiàn)方法,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
java語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲
這篇文章主要為大家詳細(xì)介紹了java語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
SpringBoot中@ConfigurationProperties自動(dòng)獲取配置參數(shù)的流程步驟
當(dāng)需要獲取配置文件中很多參數(shù)時(shí),我們可以定義參數(shù)的前綴相同,通過(guò)自動(dòng)映射 進(jìn)行獲取配置文件中參數(shù),所以本文給大家介紹了SpringBoot中@ConfigurationProperties自動(dòng)獲取配置參數(shù)的流程步驟,需要的朋友可以參考下2024-11-11
BeanDefinitionRegistryPostProcessor如何動(dòng)態(tài)注冊(cè)Bean到Spring
這篇文章主要介紹了BeanDefinitionRegistryPostProcessor如何動(dòng)態(tài)注冊(cè)Bean到Spring,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java設(shè)計(jì)模式UML之類(lèi)圖精解
在UML類(lèi)圖中,類(lèi)使用包含類(lèi)名、屬性(field) 和方法(method) 且?guī)в蟹指罹€的矩形來(lái)表示,比如下圖表示一個(gè)Employee類(lèi),它包含name,age和email這3個(gè)屬性,以及modifyInfo()方法2022-02-02
解決使用security和靜態(tài)資源被攔截的問(wèn)題
這篇文章主要介紹了解決使用security和靜態(tài)資源被攔截的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08

