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

您的位置:首頁技術文章
文章詳情頁

Spring boot JPA實現分頁和枚舉轉換代碼示例

瀏覽:140日期:2023-08-10 17:36:20

1.實現分頁

方法一:使用Pageable

使用Pageable作為入參傳入Repository,返回值用Page<T>接收

UserRepository

package com.kinglead.demo.dao; ​ import com.kinglead.demo.entity.User; import org.springframework.data.jpa.repository.JpaRepository; ​ public interface UserRepository extends JpaRepository<User, Long> { }

UserServiceImpl

package com.kinglead.demo.service.impl; ​ import com.kinglead.demo.dao.UserRepository; import com.kinglead.demo.entity.User; import com.kinglead.demo.service.UserService; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; ​ import javax.annotation.Resource; ​ @Service public class UserServiceImpl implements UserService { ​ @Resource private UserRepository userRepository; ​ /** * 查詢用戶列表 */ @Override public Page<User> queryAll(Pageable pageable) { return userRepository.findAll(pageable); } ​ }

UserService

package com.kinglead.demo.service; ​ import com.kinglead.demo.entity.User; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; ​ import java.util.List; import java.util.Map; ​ public interface UserService { /** * 查詢用戶列表 */ Page<User> queryAll(Pageable pageable); }

Controller

/** * 查詢用戶列表 */ @GetMapping('/userList') public Page<User> queryAll(){ //注意,前端頁面的頁面是從1開始,而JPA是從0開始 Pageable pageable = PageRequest.of(0,5); //查詢用戶列表 return userService.queryAll(pageable); }

方法二:以元模型概念為基礎的Criteria 查詢方法

UserRepository額外繼承JpaSpecificationExecutor<>

package com.kinglead.demo.dao; ​ import com.kinglead.demo.entity.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; ​ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> { }

UserServiceImpl

/** * 查詢用戶列表 */ @Override public Page<User> queryAll(String name,String age,Pageable pageable) { Specification<User> specification = (Specification<User>)(root, query, criteriaBuilder) ->{ List<Predicate> list = new ArrayList<>(); // 第一個name為User實體對象中的字段,第二個name為參數 Predicate p1 = criteriaBuilder.equal(root.get('name'),name); list.add(p1); //if (!age.equals(null)) { // // 此處為查詢serverName中含有age的數據 // Predicate p2 = criteriaBuilder.like(root.get('age'),'%'+age+'%' ); // list.add(p2); //} return criteriaBuilder.and(list.toArray(new Predicate[0])); }; return userRepository.findAll(specification,pageable); }

其它代碼如方法一,不用動。

2.枚舉轉換

**方法一:實體類加@Enumerated注解

package com.kinglead.demo.enums;import com.fasterxml.jackson.annotation.JsonValue;public interface BaseEnum<K> { /** * 真正與數據庫進行映射的值 * * @return */ K getCode(); /** * 顯示的信息 * * @return */ @JsonValue //jackson返回報文response的設置 String getDisplayName();}

package com.kinglead.demo.enums; ​ public enum GenderEnum implements BaseEnum<String> { ​ MALE('MALE','男'), FEMALE('FEMALE','女'); ​ ​ private final String code; private final String displayName; ​ GenderEnum(String code, String displayName) { this.code = code; this.displayName = displayName; } ​ @Override public String getCode() { return code; } ​ @Override public String getDisplayName() { return displayName; }}

package com.kinglead.demo.entity; ​ import com.kinglead.demo.enums.GenderEnum; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; ​ import javax.persistence.*; import java.io.Serializable; ​ @Data //添加getter、setter方法 @NoArgsConstructor //無參構造函數 @AllArgsConstructor //所以參數構造函數 @Entity //聲明為JPA實體 @Table(name = 't_user') //該標注與@Entity標注并列使用,用于指明數據庫的表名 public class User implements Serializable { private static final long serialVersionUID = -21070736985722463L; ​ @Id //指明主鍵 @GeneratedValue(strategy= GenerationType.AUTO) private Long id; ​ @Column(name = 'name', columnDefinition = '姓名') //指明字段 private String name; ​ @Column(name = 'age', columnDefinition = '年齡') //指明字段 private Long age; ​ @Column(name = 'email', columnDefinition = '郵箱') //指明字段 private String email; ​ @Column(name = 'gender', columnDefinition = '性別') //指明字段 @Enumerated(EnumType.STRING) private GenderEnum gender; ​ }

方法二:使用jpa2.1規范里面的屬性轉換器

將方法一中實體對象User的gender成員變量上的注解@Enumerated(EnumType.STRING)去掉

package com.kinglead.demo.config; ​ import com.kinglead.demo.enums.GenderEnum; ​ import javax.persistence.AttributeConverter; import javax.persistence.Converter; ​ @Converter(autoApply = true) public class ColorConverter implements AttributeConverter<GenderEnum,String> { ​ @Override public String convertToDatabaseColumn(GenderEnum attribute) { return attribute.getCode(); } ​ @Override public GenderEnum convertToEntityAttribute(String dbData) { return GenderEnum.valueOf(dbData); } }

上面的轉換器只是針對某一種枚舉進行轉換,如果寫成通用的轉換器呢,后續研究

源碼地址:https://github.com/kinglead2012/myblog

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品福利电影| 麻豆久久久久久| 国产一区调教| 国产一区二区三区黄网站| 麻豆精品久久| 中文字幕在线看片| 久久精品青草| 国产亚洲精品久久久久婷婷瑜伽| 久久久一二三| 天堂av在线| 香蕉久久99| 亚洲精品动态| 国产成人久久精品一区二区三区| 亚洲国产福利| 91精品91| 日本91福利区| 首页国产精品| 亚洲激情黄色| 欧美一区激情| 日韩中文字幕高清在线观看| 欧美精品一卡| 国产日产精品一区二区三区四区的观看方式 | 国产乱子精品一区二区在线观看| 国产欧美在线| 精品亚洲美女网站| 日韩一区二区三免费高清在线观看| 国产精品日韩精品在线播放| 国内精品99| 国产精品入口久久| 亚洲自啪免费| 国产h片在线观看| 少妇精品久久久一区二区三区| 九九九精品视频| 亚洲一区二区三区中文字幕在线观看| 国产一区二区三区成人欧美日韩在线观看| 日韩视频网站在线观看| 欧美一区二区三区久久精品| 黄色日韩在线| 美女福利一区二区三区| 日本v片在线高清不卡在线观看| 亚洲午夜91| 蜜桃精品在线| 国产资源在线观看入口av| 欧美日韩亚洲一区三区| 久久视频一区| 国产精品精品| 国产麻豆一区| 久久国产免费看| 神马日本精品| 亚洲精品永久免费视频| 日韩精品1区2区3区| 亚洲欧洲日韩| 国产精品日本| 亚洲网站视频| 久久精品国产68国产精品亚洲| 国产精品亚洲欧美一级在线| 久久国产高清| 五月精品视频| 亚洲精品123区| 国产精品毛片一区二区三区| 午夜精品网站| 日韩综合一区| 亚洲高清毛片| 夜夜嗨一区二区| 欧美在线亚洲| 久久男人av资源站| 亚洲综合在线电影| jiujiure精品视频播放| 欧美理论视频| 国产主播一区| 亚洲精品裸体| 免费在线日韩av| 九九精品调教| 久久国产66| 久久精品午夜| 亚洲激情社区| 欧美日韩1区| 97精品一区| 亚洲主播在线| 日韩精品一区二区三区中文在线| 午夜精品福利影院| 日本免费一区二区视频| 国产精品欧美日韩一区| 老司机精品视频网| 日韩精品1区| 亚洲午夜免费| 欧美国产偷国产精品三区| 日韩天堂在线| 亚洲免费毛片| 欧美激情视频一区二区三区免费 | 日产欧产美韩系列久久99| 综合亚洲自拍| 国产a久久精品一区二区三区| 亚洲天堂1区| jizzjizz中国精品麻豆| 亚洲婷婷在线| 精品一区91| 欧美成人亚洲| 免费成人在线视频观看| 国产精品亚洲产品| 欧美女激情福利| 色88888久久久久久影院| 欧美综合二区| 国产精品高清一区二区| 热久久国产精品| sm捆绑调教国产免费网站在线观看| 欧洲激情综合| 日韩精品麻豆| 成人黄色av| 久久wwww| 欧美日韩a区| 偷拍亚洲精品| 免费日韩精品中文字幕视频在线| 亚洲播播91| 欧美a级一区二区| 日韩精品久久理论片| 国产91一区| 天堂av在线| 久久夜夜操妹子| 欧美日韩视频免费观看| 国产精品伦理久久久久久| 久久精品天堂| 国产网站在线| 婷婷国产精品| 久久先锋影音| 综合国产精品| 亚洲三级毛片| 亚洲理论在线| 日本成人在线一区| 欧美在线不卡| 九九九精品视频| 久久精品国产久精国产爱| 国产精品3区| 成人国产精品一区二区免费麻豆| 精品视频久久| 欧美日韩精品免费观看视欧美高清免费大片 | 亚洲国产欧美日本视频| 久久精品xxxxx| 欧美自拍一区| 91综合视频| 不卡一区2区| 91精品国产一区二区在线观看| 国产伦精品一区二区三区千人斩 | 久久这里只有精品一区二区| 五月天av在线| 视频一区中文字幕精品| 精品理论电影在线| 久久久精品日韩| 在线观看一区| 精品亚洲免a| 亚洲一区二区三区四区五区午夜 | 亚洲精品电影| 青草久久视频| 激情欧美丁香| 国产亚洲欧美日韩精品一区二区三区| 免费在线欧美黄色| 在线综合欧美| 91麻豆国产自产在线观看亚洲| 美女尤物久久精品| 国产精品二区不卡| 欧美三区不卡| 在线一区免费观看| 五月激情久久| 欧美国产专区| 亚洲三级视频| 午夜久久黄色| 九九精品调教| 精品香蕉视频| 欧美亚洲免费| 免费观看久久久4p| 色黄视频在线观看| 免费在线观看一区| 日本视频一区二区| 午夜一级在线看亚洲| 国产精品一区二区三区av麻| 综合激情网站| 亚洲伊人影院| 久久国产精品99国产| 91看片一区| 亚洲综合三区| 日韩不卡在线| 另类综合日韩欧美亚洲| 在线亚洲一区| 欧美手机在线| 亚洲精品.com| 韩日一区二区| 国产一精品一av一免费爽爽| 免费在线观看精品| 欧美女激情福利| 免费精品国产| 99精品网站| 99久久久久| 久久在线免费| 女人天堂亚洲aⅴ在线观看| 欧美日韩色图| 国产一区二区高清| 亚洲在线网站| 亚洲3区在线| 你懂的国产精品| 国产不卡人人|