日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多学一招总没错吧?MP通用枚举轻松实现存储显示相分离

發布時間:2025/3/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多学一招总没错吧?MP通用枚举轻松实现存储显示相分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

狡兔尚且三窟,多學一招總沒錯吧?
🚀🚀扎哇太棗糕的博客首頁🚀🚀

🌏 拋出問題

??如果讓你實現這么一個功能:將性別使用數字存儲到數據庫中,但是前端需要獲取到的是具體的性別描述(比如男女),你會怎么實現?
??相信有很多的小伙伴想到的就是,在前端或者后端使用if語句判斷從數據庫中獲取到的值,如果是0的話就返回或者輸出女,如果是1的話就返回或者輸出男。

????可以 但不優雅

??那我用switch判斷總算優雅了吧

????優雅 但不夠裝13

??不夠裝13也是錯?低調不是錯,但是我們要讓老板感覺花這些錢雇自己他值了,甚至還要讓他感覺他賺到了。

🌎 解決問題

??對于MP的通用枚舉,官方文檔如是說道:mybatis-plus的官方文檔對通用枚舉的介紹,總結來說就是簡單的三個步驟:創建枚舉類、修改配置文件、修改實體類字段屬性,接下來就以一個案例加深小伙伴們的理解
第一步: 創建枚舉類,并給相應的字段添加相應的注解,兩個注解的注釋都在代碼中給出了

import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonValue; import lombok.AllArgsConstructor; import lombok.Getter;/*** @author : mereign* @date : 2022/3/18 - 15:28* @desc : 性別的枚舉類*/@Getter @AllArgsConstructor public enum SexEnum {FEMALE(0, "女"),MALE(1, "男"),GROUP(2, "組合"),NONE(3, "不詳");// 將注解標識的屬性值存儲到數據庫中@EnumValueprivate Integer sex;// 將注解標識的屬性值返回給前端@JsonValueprivate String sexName;}

第二步: 配置文件

mybatis-plus:# 聲明枚舉類所在包type-enums-package: com.xiaoyu.enums

第三步: 修改實體類字段屬性,其他的屬性都照常設置

/*** 性別(0女1男2組合3不明)*/ private SexEnum sex;

前端控制器中使用的方法是MP中自帶的list方法

/*** 查詢所有歌手* @return*/ @RequestMapping(value = "/allSinger", method = RequestMethod.GET) public Object allSinger() {// 查詢所有的歌手信息并返回return service.list(); }

測試
??怎么回事?前端并沒有輸出任何內容,難道是裝13不成?別急,讓我們使用測試類簡單分析一波??根據測試類的返回值可以得知,從數據庫中查詢到的sex字段值既不是0|1也不是男|女而是null,這到底是怎么回事?
??經過半天的百度和試錯,最終將原因鎖定在字段類型上,原來是我們的數據庫中sex的類型是tinyint而枚舉類中使用@EnumValue修飾的字段類型是integer,由于字段類型不匹配導致返回的是一個null,這也就能夠解釋得通為什么前端不顯示sex了。??我的解決方案是將數據庫中的類型改為int,雖然說數據庫中使用tinyint可以節省數據庫的存儲空間,但是由于本人的能力有限,無法找到tinyint對應的java類型,最后無奈修改了數據庫的表結構,如果小伙伴們有妙招的話,還請評論區告訴小扎扎如此操作前端就顯示信息了

總結

以上是生活随笔為你收集整理的多学一招总没错吧?MP通用枚举轻松实现存储显示相分离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。