多学一招总没错吧?MP通用枚举轻松实现存储显示相分离
狡兔尚且三窟,多學(xué)一招總沒錯(cuò)吧?
🚀🚀扎哇太棗糕的博客首頁🚀🚀
🌏 拋出問題
??如果讓你實(shí)現(xiàn)這么一個(gè)功能:將性別使用數(shù)字存儲到數(shù)據(jù)庫中,但是前端需要獲取到的是具體的性別描述(比如男女),你會怎么實(shí)現(xiàn)?
??相信有很多的小伙伴想到的就是,在前端或者后端使用if語句判斷從數(shù)據(jù)庫中獲取到的值,如果是0的話就返回或者輸出女,如果是1的話就返回或者輸出男。
????可以 但不優(yōu)雅
??那我用switch判斷總算優(yōu)雅了吧
????優(yōu)雅 但不夠裝13
??不夠裝13也是錯(cuò)?低調(diào)不是錯(cuò),但是我們要讓老板感覺花這些錢雇自己他值了,甚至還要讓他感覺他賺到了。
🌎 解決問題
??對于MP的通用枚舉,官方文檔如是說道:mybatis-plus的官方文檔對通用枚舉的介紹,總結(jié)來說就是簡單的三個(gè)步驟:創(chuàng)建枚舉類、修改配置文件、修改實(shí)體類字段屬性,接下來就以一個(gè)案例加深小伙伴們的理解
第一步: 創(chuàng)建枚舉類,并給相應(yīng)的字段添加相應(yīng)的注解,兩個(gè)注解的注釋都在代碼中給出了
第二步: 配置文件
mybatis-plus:# 聲明枚舉類所在包type-enums-package: com.xiaoyu.enums第三步: 修改實(shí)體類字段屬性,其他的屬性都照常設(shè)置
/*** 性別(0女1男2組合3不明)*/ private SexEnum sex;前端控制器中使用的方法是MP中自帶的list方法
/*** 查詢所有歌手* @return*/ @RequestMapping(value = "/allSinger", method = RequestMethod.GET) public Object allSinger() {// 查詢所有的歌手信息并返回return service.list(); }測試
??怎么回事?前端并沒有輸出任何內(nèi)容,難道是裝13不成?別急,讓我們使用測試類簡單分析一波??根據(jù)測試類的返回值可以得知,從數(shù)據(jù)庫中查詢到的sex字段值既不是0|1也不是男|女而是null,這到底是怎么回事?
??經(jīng)過半天的百度和試錯(cuò),最終將原因鎖定在字段類型上,原來是我們的數(shù)據(jù)庫中sex的類型是tinyint而枚舉類中使用@EnumValue修飾的字段類型是integer,由于字段類型不匹配導(dǎo)致返回的是一個(gè)null,這也就能夠解釋得通為什么前端不顯示sex了。??我的解決方案是將數(shù)據(jù)庫中的類型改為int,雖然說數(shù)據(jù)庫中使用tinyint可以節(jié)省數(shù)據(jù)庫的存儲空間,但是由于本人的能力有限,無法找到tinyint對應(yīng)的java類型,最后無奈修改了數(shù)據(jù)庫的表結(jié)構(gòu),如果小伙伴們有妙招的話,還請?jiān)u論區(qū)告訴小扎扎如此操作前端就顯示信息了
總結(jié)
以上是生活随笔為你收集整理的多学一招总没错吧?MP通用枚举轻松实现存储显示相分离的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡可以取现金吗
- 下一篇: 2020年最快的dns_2020年哪里换