Mybatis-plus中的@EnumValue注解使用詳解
前言
在實際開發(fā)中,對于一些狀態(tài)類的字段,我們通常使用的是枚舉,而保存到數(shù)據(jù)庫時,我們是用的枚舉的某一個屬性進行保存的,這里就會有一個問題,在PO類中,如果我們直接使用枚舉類型去映射數(shù)據(jù)庫的對應字段保存時,往往就會因為類型不匹配導致映射失敗,如果要解決這個問題,辦法有很多種,Mybatis-plus提供了一種解決辦法,就是使用@EnumValue注解,這里我們就使用這種方式。
Maven引入的依賴
<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類
@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;
}
枚舉類(@EnumValue注解就用在這里)
@Getter
public enum ChargeCategoryEnum {
CHARGE("CHARGE",1,"基本費"),
PENALTY("PENALTY",2,"違約金");
private String code;
@EnumValue //在需要保存到數(shù)據(jù)庫的值上面加上注解
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類
@Mapper
public interface ReduceRuleMapper extends BaseMapper<ReduceRule> {
}配置文件
#配置枚舉 支持通配符 * 或者 ; 分割。指定枚舉類所在的包
mybatis-plus:
type-enums-package: com.demo.mybatisplus.enum
configuration:
default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler
#handler配置可以省略不寫,默認配置就是上面這個Handler
測試代碼
@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);
}
}拓展
如果返回給前端不希望直接將枚舉返回的話,需要在枚舉類上加上 @JsonValue 注解
@Getter
public enum ChargeCategoryEnum {
CHARGE("CHARGE",1,"基本費"),
PENALTY("PENALTY",2,"違約金");
private String code;
@EnumValue //在需要保存到數(shù)據(jù)庫的值上面加上注解
private Integer value;
@JsonValue //需要在前端展示哪個值就在哪個屬性上加上該注解
private String text;
public String getCode() {
return code;
}
ChargeCategoryEnum(String code, Integer value, String text) {
this.code = code;
this.value = value;
this.text = text;
}
}到此這篇關于Mybatis-plus中的@EnumValue注解使用詳解的文章就介紹到這了,更多相關@EnumValue注解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用@Autowired注解警告Field injection is not recommended的解決
這篇文章主要介紹了使用@Autowired注解警告Field injection is not recommended的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04
Spring中@RequestMapping、@RestController和Postman
本文介紹了Spring框架中常用的@RequestMapping和@RestController注解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10
springcloud + mybatis + seate集成示例
本文主要介紹了springcloud + mybatis + seate集成示例,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06
Java弱鍵集合WeakHashMap及ConcurrentCache原理詳解
這篇文章主要介紹了Java弱鍵集合WeakHashMap及ConcurrentCache原理詳解,基于哈希表的Map接口實現(xiàn),支持null鍵和值,但是WeakHashMap具有弱鍵,可用來實現(xiàn)緩存存儲,在進行GC的時候會自動回收鍵值對,需要的朋友可以參考下2023-09-09
JDBC如何訪問MySQL數(shù)據(jù)庫,并增刪查改
這篇文章主要介紹了JDBC如何訪問MySQL數(shù)據(jù)庫,幫助大家更好的理解和學習java與MySQL,感興趣的朋友可以了解下2020-08-08
在SpringBoot中使用jwt實現(xiàn)token身份認證的實例代碼
你還不會在SpringBoot中使用jwt實現(xiàn)token身份認證嗎,本文小編就給大家詳細的介紹一下在SpringBoot中使用jwt實現(xiàn)token身份認證的實例代碼,感興趣的同學可以自己動手試一試2023-09-09

