亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解mybatis-plus使用@EnumValue注解的方式對枚舉類型的處理

 更新時間:2020年12月18日 16:44:07   作者:Zephyr_Syn  
這篇文章主要介紹了詳解mybatis-plus使用@EnumValue注解的方式對枚舉類型的處理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言:

在開發(fā)中,我們經(jīng)常會用到諸如:性別(男/女)、審核狀態(tài)(未審核/審核中/已審核)之類的數(shù)據(jù),通常會在數(shù)據(jù)庫中使用一個數(shù)字類型的字段來標(biāo)識,比如:性別,用1來表示男,2來表示女,而在代碼中一般會定義成enum類型或靜態(tài)常量來避免在業(yè)務(wù)代碼中出現(xiàn)“0/1”這種魔法值,但是在數(shù)據(jù)庫存儲及前后端交互的時候,就需要進行轉(zhuǎn)化;無論是在SQL、前端還是后臺轉(zhuǎn)化,都需要寫相應(yīng)的代碼,無形中增加了開發(fā)工作量;mybatis-plus實現(xiàn)了對該問題的處理,能夠讓我們在查詢數(shù)據(jù)庫時,直接能夠返回字段標(biāo)識的意思。配置如下:

第一步:

創(chuàng)建枚舉類,在需要存儲數(shù)據(jù)庫的屬性上添加@EnumValue注解,在需要前端展示的屬性上添加@JsonValue注解;

package com.demo.mybatisplus.constant;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;

public enum SexEnum {

 MAN(1, "男"),
 WOMAN(2, "女");

 @EnumValue
 private Integer key;

 @JsonValue
 private String display;

 SexEnum(Integer key, String display) {
  this.key = key;
  this.display = display;
 }

 public Integer getKey() {
  return key;
 }

 public String getDisplay() {
  return display;
 }
}

第二步:

application.properties文件里添加配置,定義掃描枚舉類的包路徑;

#配置枚舉 支持通配符 * 或者 ; 分割
mybatis-plus.type-enums-package=com.demo.mybatisplus.constant
#mybatis-plus.configuration.default-enum-type-handler=org.apache.ibatis.type.EnumOrdinalTypeHandler

第三步:

pojo中的sex屬性設(shè)置為枚舉SexEnum;

 @ApiModelProperty(value = "性別")
 @TableField("sex")
 private SexEnum sex;

測試:

 @Test
 public void insert() {
  UserInfo userInfo = new UserInfo();
  userInfo.setAge(22);
  userInfo.setName("李四");
  userInfo.setSex(SexEnum.WOMAN);
  userInfoMapper.insert(userInfo);
  System.out.println(userInfo);
 }

數(shù)據(jù)庫保存的值:

ID NAME AGE SEX
1 張三 11 1
2 李四 22 2
3 王五 33 1

前端顯示的值:

[
 {"id":"1","name":"張三","age":11,"sex":"男"},
 {"id":"2","name":"李四","age":22,"sex":"女"},
 {"id":"3","name":"王五","age":33,"sex":"男"}
]

注意事項:

@EnumValue標(biāo)記的枚舉類屬性的類型要和數(shù)據(jù)庫字段的類型對應(yīng),否則在查詢數(shù)據(jù)的時候無法轉(zhuǎn)化為枚舉類型,并顯示為null;

如果查詢的時候,數(shù)據(jù)庫字段的值匹配不到枚舉,程序運行時并不會報錯,而是顯示為null;

在保存的時候,前端需要傳遞@JsonValue標(biāo)記的枚舉類屬性的值,即"男/女";因為Enum的屬性ordinal(int),在測試過程中,傳枚舉值在枚舉類中的定義順序(或者稱為索引,順序從0開始),也可以轉(zhuǎn)換為相應(yīng)的枚舉值,比如:上面定義的SexEnum枚舉,前端傳0或者"0",會轉(zhuǎn)換成MAN,傳1或者"1"會轉(zhuǎn)換成WOMAN;傳其他值會報異常:

com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type com.demo.mybatisplus.constant.SexEnum from String "3": not one of the values accepted for Enum class: [女, 男]或com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of typecom.demo.mybatisplus.constant.SexEnum from number 3: index value outside legal index range [0..2];

到此這篇關(guān)于詳解mybatis-plus使用@EnumValue注解的方式對枚舉類型的處理的文章就介紹到這了,更多相關(guān)mybatis-plus EnumValue枚舉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • log4j2異步Logger(詳解)

    log4j2異步Logger(詳解)

    下面小編就為大家?guī)硪黄猯og4j2異步Logger(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 使用springboot對linux進行操控的方法示例

    使用springboot對linux進行操控的方法示例

    這篇文章主要介紹了使用springboot對linux進行操控的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 一文搞懂Spring中的Bean作用域

    一文搞懂Spring中的Bean作用域

    scope用來聲明容器中的對象所應(yīng)該處的限定場景或者說該對象的存活時間,即容器在對象進入其 相應(yīng)的scope之前,生成并裝配這些對象,在該對象不再處于這些scope的限定之后,容器通常會銷毀這些對象,這篇文章主要介紹了Spring中的Bean作用域,需要的朋友可以參考下
    2022-06-06
  • Java線程池隊列PriorityBlockingQueue原理分析

    Java線程池隊列PriorityBlockingQueue原理分析

    這篇文章主要介紹了Java線程池隊列PriorityBlockingQueue原理分析,PriorityBlockingQueue隊列是?JDK1.5?的時候出來的一個阻塞隊列,但是該隊列入隊的時候是不會阻塞的,永遠會加到隊尾,需要的朋友可以參考下
    2023-12-12
  • spring boot 監(jiān)聽容器啟動代碼實例

    spring boot 監(jiān)聽容器啟動代碼實例

    這篇文章主要介紹了spring boot 監(jiān)聽容器啟動代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Spring之配置multipartResolver解析器、上傳文件、處理文件過程

    Spring之配置multipartResolver解析器、上傳文件、處理文件過程

    文章介紹了Spring中處理multipart表單的兩種解析器(CommonsMultipartResolver和StandardServletMultipartResolver)的配置方法,包括文件大小限制、臨時存儲路徑設(shè)置,以及通過enctype和accept屬性控制上傳格式,強調(diào)MultipartFile需配置解析器,而Part接口無需
    2025-08-08
  • SpringMVC中的ResourceUrlProviderExposingInterceptor詳解

    SpringMVC中的ResourceUrlProviderExposingInterceptor詳解

    這篇文章主要介紹了SpringMVC中的ResourceUrlProviderExposingInterceptor詳解,ResourceUrlProviderExposingInterceptor是Spring MVC的一個HandlerInterceptor,用于向請求添加一個屬性,需要的朋友可以參考下
    2023-12-12
  • java8新特性 stream流的方式遍歷集合和數(shù)組操作

    java8新特性 stream流的方式遍歷集合和數(shù)組操作

    這篇文章主要介紹了java8新特性 stream流的方式遍歷集合和數(shù)組操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • collection集合體系與并發(fā)修改異常的解決方法

    collection集合體系與并發(fā)修改異常的解決方法

    今天小編就為大家分享一篇關(guān)于collection集合體系與并發(fā)修改異常的解決方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • springmvc 傳遞和接收數(shù)組參數(shù)的實例

    springmvc 傳遞和接收數(shù)組參數(shù)的實例

    下面小編就為大家分享一篇springmvc 傳遞和接收數(shù)組參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論