Mybatis-plus中的@EnumValue注解使用詳解
前言
在實(shí)際開(kāi)發(fā)中,對(duì)于一些狀態(tài)類(lèi)的字段,我們通常使用的是枚舉,而保存到數(shù)據(jù)庫(kù)時(shí),我們是用的枚舉的某一個(gè)屬性進(jìn)行保存的,這里就會(huì)有一個(gè)問(wèn)題,在PO類(lèi)中,如果我們直接使用枚舉類(lèi)型去映射數(shù)據(jù)庫(kù)的對(duì)應(yīng)字段保存時(shí),往往就會(huì)因?yàn)轭?lèi)型不匹配導(dǎo)致映射失敗,如果要解決這個(gè)問(wèn)題,辦法有很多種,Mybatis-plus提供了一種解決辦法,就是使用@EnumValue注解,這里我們就使用這種方式。
Maven引入的依賴(lài)
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
Demo
PO類(lèi)
@Data @TableName(value = "urge_reduce_rule") public class ReduceRule { @TableId(value = "id", type = IdType.AUTO) private Long id; @TableField(value = "charge_category") private ChargeCategoryEnum chargeCategoryEnum; @TableField(value = "name") private String name; }
枚舉類(lèi)(@EnumValue注解就用在這里)
@Getter public enum ChargeCategoryEnum { CHARGE("CHARGE",1,"基本費(fèi)"), PENALTY("PENALTY",2,"違約金"); private String code; @EnumValue //在需要保存到數(shù)據(jù)庫(kù)的值上面加上注解 private Integer value; private String text; public String getCode() { return code; } ChargeCategoryEnum(String code, Integer value, String text) { this.code = code; this.value = value; this.text = text; } }
mapper類(lèi)
@Mapper public interface ReduceRuleMapper extends BaseMapper<ReduceRule> { }
配置文件
#配置枚舉 支持通配符 * 或者 ; 分割。指定枚舉類(lèi)所在的包 mybatis-plus: type-enums-package: com.demo.mybatisplus.enum configuration: default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler #handler配置可以省略不寫(xiě),默認(rèn)配置就是上面這個(gè)Handler
測(cè)試代碼
@SpringBootTest(classes = DemoApplication.class) class DemoApplicationTests { @Resource private ReduceRuleMapper reduceRuleMapper; @Test void test1(){ ReduceRule reduceRule = new ReduceRule(); reduceRule.setName("名字"); reduceRule.setChargeCategoryEnum(ChargeCategoryEnum.PENALTY); reduceRuleMapper.insert(reduceRule); } @Test void test2(){ ReduceRule reduceRule = reduceRuleMapper.selectById(32L); System.out.println(reduceRule); } }
拓展
如果返回給前端不希望直接將枚舉返回的話(huà),需要在枚舉類(lèi)上加上 @JsonValue 注解
@Getter public enum ChargeCategoryEnum { CHARGE("CHARGE",1,"基本費(fèi)"), PENALTY("PENALTY",2,"違約金"); private String code; @EnumValue //在需要保存到數(shù)據(jù)庫(kù)的值上面加上注解 private Integer value; @JsonValue //需要在前端展示哪個(gè)值就在哪個(gè)屬性上加上該注解 private String text; public String getCode() { return code; } ChargeCategoryEnum(String code, Integer value, String text) { this.code = code; this.value = value; this.text = text; } }
到此這篇關(guān)于Mybatis-plus中的@EnumValue注解使用詳解的文章就介紹到這了,更多相關(guān)@EnumValue注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中@PostConstruct的實(shí)現(xiàn)方法
大多數(shù)java程序員都使用過(guò)@PostConstruct注解,它的作用就是在Bean初始化完成后執(zhí)行,相當(dāng)于我們常說(shuō)的init()方法,但是我們看@PostConstruct只有單單的一個(gè)注解,它到底是如何實(shí)現(xiàn)在Bean初始化完成后就被調(diào)用的呢,本文將詳細(xì)給大家介紹一下2023-06-06基于XML配置Spring的自動(dòng)裝配過(guò)程解析
這篇文章主要介紹了基于XML配置Spring的自動(dòng)裝配過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Java編程實(shí)現(xiàn)軌跡壓縮算法開(kāi)放窗口實(shí)例代碼
這篇文章主要介紹了Java編程實(shí)現(xiàn)軌跡壓縮算法開(kāi)放窗口實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11Java多線(xiàn)程并發(fā)編程 Synchronized關(guān)鍵字
現(xiàn)有一成員變量 Test,當(dāng)線(xiàn)程 A 調(diào)用 Test 的 synchronized 方法,線(xiàn)程 A 獲得 Test 的同步鎖,同時(shí),線(xiàn)程 B 也去調(diào)用 Test 的 synchronized 方法,此時(shí)線(xiàn)程 B 無(wú)法獲得 Test 的同步鎖,必須等待線(xiàn)程 A 釋放 Test 的同步鎖才能獲得從而執(zhí)行對(duì)應(yīng)方法的代碼2017-05-05java面試應(yīng)用上線(xiàn)后Cpu使用率飆升如何排查
這篇文章主要為大家介紹了java面試中應(yīng)用上線(xiàn)后Cpu使用率飆升如何排查的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Idea 搭建Spring源碼環(huán)境的超詳細(xì)教程
這篇文章主要介紹了Idea 搭建Spring源碼環(huán)境,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Java設(shè)計(jì)模式中的建造者(Builder)模式解讀
這篇文章主要介紹了Java設(shè)計(jì)模式中的建造者(Builder)模式解讀, 建造者模式是一種創(chuàng)建對(duì)象的設(shè)計(jì)模式,它通過(guò)將對(duì)象的構(gòu)建過(guò)程分解為多個(gè)步驟,并使用一個(gè)建造者類(lèi)來(lái)封裝這些步驟,從而使得對(duì)象的構(gòu)建過(guò)程更加靈活和可擴(kuò)展,需要的朋友可以參考下2023-10-10mybatis-plus多表關(guān)聯(lián)查詢(xún)功能的實(shí)現(xiàn)
本文給大家介紹mybatis-plus多表關(guān)聯(lián)查詢(xún)功能的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-11-11