日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Springboot JPA 枚舉Enum類型存入到數(shù)據(jù)庫的操作

瀏覽:23日期:2023-03-26 15:33:32

1、使用JPA 的@Enumerated 注解 ,可以直接將Enum映射到數(shù)據(jù)庫中。

但是value的值只有兩種方式選擇,一種是使用枚舉的序號(hào)映射,一種是枚舉的名稱來映射。

public enum EnumType { /** Persist enumerated type property or field as an integer. */ ORDINAL, /** Persist enumerated type property or field as a string. */ STRING}

如果想存入枚舉中的自定義的值,則需要實(shí)現(xiàn)AttributeConverter接口

2、實(shí)現(xiàn)AttributeConverter接口方式

/** * @param <DB> : 保存到數(shù)據(jù)庫的數(shù)據(jù)類型 * @author peter * date: 2019-05-15 16:57 **/public interface PersistEnum2DB<DB> { DB getData();}

import javax.persistence.AttributeConverter;/** * @param <ATTR> 實(shí)體類中枚舉的類型,需實(shí)現(xiàn){@link PersistEnum2DB} 接口 * @param <DB> 保存到數(shù)據(jù)庫的數(shù)據(jù)類型 * @author peter * date: 2019-05-15 16:59 */public abstract class AbstractEnumConverter<ATTR extends Enum<ATTR> & PersistEnum2DB<DB>, DB> implements AttributeConverter<ATTR, DB> { private final Class<ATTR> clazz; public AbstractEnumConverter(Class<ATTR> clazz) { this.clazz = clazz; } @Override public DB convertToDatabaseColumn(ATTR attribute) { return attribute != null ? attribute.getData() : null; } @Override public ATTR convertToEntityAttribute(DB dbData) { if (dbData == null) return null; ATTR[] enums = clazz.getEnumConstants(); for (ATTR e : enums) { if (e.getData().equals(dbData)) { return e; } } throw new UnsupportedOperationException('枚舉轉(zhuǎn)化異常。枚舉【' + clazz.getSimpleName() + '】,數(shù)據(jù)庫庫中的值為:【' + dbData + '】'); }}使用方式

import com.tourcoo.parking.enums.convert2db.AbstractEnumConverter;import com.tourcoo.parking.enums.convert2db.PersistEnum2DB;/** * @author peter * create: 2019-05-15 14:33 **/public enum PayStatus implements PersistEnum2DB<Integer> { NONPAY(0, '未支付'), PAID(1, '已支付'); private int code; private String msg; PayStatus(int code, String msg) { this.code = code; this.msg = msg; } public int getCode() { return code; } public String getMsg() { return msg; } @Override public Integer getData() { return code; } public static class Converter extends AbstractEnumConverter<PayStatus, Integer> { public Converter() { super(PayStatus.class); } }}

//支付狀態(tài) @Convert(converter = PayStatus.Converter.class) private PayStatus payStatus;

補(bǔ)充: SpringBoot | Jpa 將Java枚舉映射為基本值類型

解決方法之一:

使用實(shí)體屬性類型轉(zhuǎn)換器AttributeConverter

場景假設(shè):

在代碼中使用枚舉類來映射用戶性別(如下代碼所示),在數(shù)據(jù)庫中使用字符映射性別(M ,F(xiàn)),Hibernate提供了AttributeConverter解決上述場景的轉(zhuǎn)換問題

public enum Gender { MALE( ’M’ ), FEMALE( ’F’ ); private final char code; Gender(char code) { this.code = code; } public static Gender fromCode(char code) { if ( code == ’M’ || code == ’m’ ) { return MALE; } if ( code == ’F’ || code == ’f’ ) { return FEMALE; } throw new UnsupportedOperationException( 'The code ' + code + ' is not supported!' ); } public char getCode() { return code; }}

User實(shí)體類定義如下,重點(diǎn)在 @Convert(converter = GenderConverter.class)注釋

@Entity@Data@ToString@Table(name = 'user')public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; @Convert(converter = GenderConverter.class) private Gender gender;}

定義一個(gè)GenderConverter的類,需要實(shí)現(xiàn)AttributeConverter接口,實(shí)現(xiàn)convertToDatabaseColumn和convertToEntityAttribute,作用是分別封裝從實(shí)體類映射至數(shù)據(jù)庫字段數(shù)值的邏輯和從數(shù)據(jù)庫字段數(shù)值映射到代碼實(shí)體類中的枚舉類值。

public class GenderConverter implements AttributeConverter<Gender,Character> { @Override public Character convertToDatabaseColumn(Gender gender) { if ( gender == null ) { return null; } return gender.getCode(); } @Override public Gender convertToEntityAttribute(Character value) { if ( value == null ) { return null; } return Gender.fromCode( value ); }}測試

@SpringBootTest@Slf4jpublic class AttributeConverterTest { @Resource private UserRepository userRepository; @Test void should_user__when__give_user() { //given User user1 = new User(null,'Janny', Gender.FEMALE); User user2 = new User(null,'Tom', Gender.MALE); //when User actUser1 = userRepository.save(user1); User actUser2 = userRepository.save(user2); //then Assertions.assertNotNull(actUser1); Assertions.assertNotNull(actUser2); }}

Springboot JPA 枚舉Enum類型存入到數(shù)據(jù)庫的操作

例外Hibernate也提供其他的方法,如使用@Enumerated注解,詳情可閱讀這篇文檔

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
激情婷婷亚洲| 日韩国产一区二区| 国产偷自视频区视频一区二区| 亚洲一级影院| 亚洲精品午夜av福利久久蜜桃| 免费av一区| av不卡在线| 亚洲欧美视频一区二区三区| 欧美日韩中文一区二区| 黄色欧美日韩| 中文字幕亚洲在线观看| 奇米色欧美一区二区三区| 欧美在线看片| 精品一二三区| 激情久久久久久| 男女精品网站| 欧美一级久久| 成人在线超碰| 欧美不卡高清| 中文一区一区三区免费在线观| 日韩成人一级| 日本黄色精品| 在线精品小视频| 好吊视频一区二区三区四区| 日韩精品一二三区| 国产欧美激情| 精品成人免费一区二区在线播放| 亚洲91久久| 蜜桃久久av| 国产欧美午夜| 中文另类视频| 日本 国产 欧美色综合| 国产精品视频一区二区三区四蜜臂| 97精品国产| 亚洲一区二区动漫| 国产精品白浆| 亚洲夜间福利| 日本成人在线不卡视频| 国产精品久久久久久妇女| 成人三级高清视频在线看| 亚洲免费高清| 久久激情五月激情| 亚洲精品在线影院| 亚洲精品极品| 中文字幕在线看片| 亚洲网址在线观看| 四虎成人av| 蜜桃视频在线观看一区| 精品一区二区三区中文字幕 | 四虎精品一区二区免费| 麻豆一区二区99久久久久| 欧美日韩在线二区| 久久国际精品| 蜜臀av免费一区二区三区| 奇米亚洲欧美| 久久人人99| 国产精品99精品一区二区三区∴ | 免播放器亚洲| 精品国产精品久久一区免费式| 欧美日韩四区| 国产suv精品一区| 视频一区二区中文字幕| 成人午夜网址| 少妇精品久久久一区二区| 日韩成人亚洲| 国产精品magnet| 中文精品电影| 91精品国产乱码久久久久久久| 日韩午夜视频在线| 国产99精品| 六月丁香综合在线视频| 亚洲毛片一区| 精品一区在线| 91欧美在线| 久久国产尿小便嘘嘘| 激情五月色综合国产精品| 欧美日韩夜夜| 日韩视频在线一区二区三区| 久久精品国产久精国产爱| 亚洲精品日本| 悠悠资源网久久精品| av日韩中文| 久久不见久久见国语| 亚洲三级国产| 99xxxx成人网| 欧美日韩色图| 超碰成人av| 国产精品xxx| 日本aⅴ亚洲精品中文乱码| 午夜国产一区二区| 青青青免费在线视频| 国产精品www.| 日韩动漫一区| 色综合视频一区二区三区日韩| 欧美精品激情| 欧美日中文字幕| 日韩欧美一区二区三区免费观看| 欧美成人aaa| 国产欧美一区二区三区精品观看| 亚洲午夜久久| 免费久久99精品国产自在现线| 香蕉精品久久| 久久久精品日韩| 中文字幕在线看片| 国际精品欧美精品| 精品中文字幕一区二区三区四区| 国产日韩三级| 亚洲精品一二| 亚洲a成人v| 蜜臀av性久久久久蜜臀aⅴ四虎| 午夜国产精品视频| 黑丝一区二区三区| 激情欧美一区| 成人av动漫在线观看| 国产精品av一区二区| 色天使综合视频| 久久精品欧美一区| 国产在线日韩| 中文亚洲欧美| 免费人成在线不卡| 亚洲日产av中文字幕| 蜜臀av一区二区在线免费观看 | av亚洲免费| 黄色av一区| 性色一区二区| 亚洲精选91| 91亚洲精品在看在线观看高清| 日韩激情综合| 国产美女久久| 欧美激情麻豆| 精品久久精品| 日韩在线第七页| 色老板在线视频一区二区| 色在线中文字幕| 久久国产日韩| 亚洲欧美日韩国产一区二区| 亚洲精品九九| 国产精品免费不| 超碰在线99| 欧美日韩国产一区二区三区不卡| 亚洲欧美日本视频在线观看| 日精品一区二区三区| 国产亚洲精品美女久久久久久久久久| 国产精品最新| 特黄毛片在线观看| 女同性一区二区三区人了人一| 久久不射网站| 国产亚洲精品美女久久久久久久久久| 久久国内精品自在自线400部| 麻豆精品在线播放| 欧美成人基地| 蜜桃视频免费观看一区| 国产伦精品一区二区三区千人斩| 国产精品成人a在线观看| 久久国产中文字幕| 亚洲综合中文| 免费看久久久| 91精品国产乱码久久久久久久| 亚洲欧美网站| 国产另类在线| 99精品视频精品精品视频| 中文字幕日本一区| 精品视频黄色| 久久五月天小说| 亚洲精一区二区三区| 粉嫩av一区二区三区四区五区 | 999在线观看精品免费不卡网站| 视频一区日韩精品| 国产 日韩 欧美 综合 一区| 自拍日韩欧美| 欧美天堂一区| 亚洲成人不卡| 日韩精彩视频在线观看| 欧美日韩国产观看视频| 亚洲一区成人| 久久精品国产网站| 99成人在线| 麻豆久久久久久| 夜久久久久久| 久久久久伊人| 视频一区视频二区中文| 蜜桃精品视频| 久久夜色精品| 久久久久免费| 日韩午夜视频在线| 久久网站免费观看| 国产乱人伦精品一区| 国产韩日影视精品| 久久99久久人婷婷精品综合| 亚洲午夜电影| 欧美aaaaaa午夜精品| 夜夜嗨一区二区三区| 久久亚洲黄色| 国产精品色网| 日韩国产欧美一区二区| 欧美偷窥清纯综合图区| 午夜久久黄色| 欧美国产一级| 欧美日韩午夜| 国产精品毛片|