• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SpringBoot2.0使用Jpa快捷實現條件分頁查詢

    標簽: SpringBoot Jpa

    一,示例需求
    如下圖所示,需要通過多條件模糊查詢、需要分頁、需要排序
    在這里插入圖片描述
    二,實體對象

    package com.xxxxxx;
    
    import lombok.Data;
    import lombok.ToString;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Table;
    
    @Data
    @ToString
    @Entity
    @Table(name = "server_basic_info")
    public class ServerBasicInfo {
        @javax.persistence.Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        // ip地址
        private String ipAddress;
        //服務器用戶名
        private String serverUserName;
        //服務器密碼
        private String serverPass;
        //業務分組
        private String businessGroup;
        //status
        private Integer status;
        private String creator;
        //系統類型
        private String sysType;
    
    
        //更新時間
        private String updateTime;
    }
    
    

    三,表結構

    CREATE TABLE `server_basic_info` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `ip_address` varchar(255) DEFAULT NULL,
      `server_user_name` varchar(255) DEFAULT NULL,
      `server_pass` varchar(255) DEFAULT NULL,
      `business_group` varchar(255) DEFAULT NULL,
      `status` int(11) DEFAULT NULL,
      `update_time` datetime DEFAULT NULL,
      `creator` varchar(255) DEFAULT NULL,
      `sys_type` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `id_UNIQUE` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=gbk;
    
    

    在這里插入圖片描述

    四,業務實現

        @Override
        public QueryResponseResult findByPage(String ip, String group, String creator, String status, int page, int pageSize) {
            ServerBasicInfo sbi = new ServerBasicInfo();
            //為空則不set,不set則matcher實體沒有該字段,則最終sql沒有該字段,則表示不查詢這個字段,符合需求
            //把需要模糊查詢的字段塞到實體中
            if (StringUtils.isNotBlank(ip)) {
                sbi.setIpAddress(ip);
            }
            if (StringUtils.isNotBlank(group)) {
    
                sbi.setBusinessGroup(group);
            }
            if (StringUtils.isNotBlank(creator)) {
    
                sbi.setCreator(creator);
            }
            if (StringUtils.isNotBlank(status)) {
                sbi.setStatus(Integer.parseInt(status));
            }
            //ExampleMatcher.StringMatcher.CONTAINING表示前后匹配,相當于sql中的 like '%xxx%';withIgnoreCase()表示忽略大小寫
            ExampleMatcher matcher = ExampleMatcher.matching().
                    withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING).withIgnoreCase();
    
    		//用前面構造好的查詢對象和ExampleMatcher對象構造Example對象
    		//備注1
            Example<ServerBasicInfo> ex = Example.of(sbi, matcher);
    
    		//構造Pageable對象,其中需要指定頁碼和每頁大小和返回結果的排序
    		//Sort.Direction.DESC, "updateTime")表示返回結果按照updateTime字段倒排
    		//備注2
            Pageable pageable = PageRequest.of(page, pageSize, Sort.by(Sort.Direction.DESC, "updateTime"));
            //進行分頁條件查詢,其中使用的就是備注1和備注2處構造的2個對象,這2個對象中包含了需求中所有的要素
            Page<ServerBasicInfo> pageSbi = serverBasicInfoRepository.findAll(ex, pageable);
    
            List<ServerBasicInfo> list = pageSbi.getContent();//本頁數據列表
            long count = pageSbi.getTotalElements();//總共多少條數據
            int pagenum = pageSbi.getTotalPages();//多少頁
    
            QueryResult queryResult = new QueryResult();
            queryResult.setList(list);
            queryResult.setTotal(count);
            queryResult.setTotal_pages(pagenum);
    
    
            return new QueryResponseResult(CommonCode.SUCCESS, queryResult);
        }
    
    版權聲明:本文為qq_43629877原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_43629877/article/details/107838403

    智能推薦

    Springboot整合JPA以及動態條件查詢的實現

    前言:         為了學習JPA技術,我在網上翻閱了幾十篇關于Springboot整合JPA的文章,但文章內容由于作者水平良莠不均,非常影響類似我這樣的菜鳥的學習效率。同時也是為了鞏固并匯總 SpringBoot + JPA 的相關知識,才有了這篇博客。 1.Demo展示第一階段: 首先展示Demo項目最終的目錄結構,如下...

    Springboot Hibernate+JPA 實現多條件動態查詢

    首先需要在數據Repository接口中繼承JpaRepository,之后還需要繼承JpaSpecificationExecutor即可使用動態條件查詢 持久層: 業務層需要Specification類,重寫toPredicate方法,這里使用了lambda表達式: Controller控制層使用get請求傳遞參數,使用對象接收。 如果需要分頁的話,在findAll條件參數后,可以再加分頁參數P...

    22、SpringBoot2.0整合Vue框架實現分頁(二十二)

    0、頁面效果 點擊下面按鈕查詢對應的分頁數據。 頁面的實現需要用到之前的文章[SpringBoot2.0實現增刪改查]中的findByPage方法。(https://blog.csdn.net/yang_guang3/article/details/99691080) 1、引入Vue相關的css文件和JS文件:頁面相關靜態資源 2、在controller層添加方法: 用于計算頁面查詢的總數據。...

    Springboot 快速學會使用 JPA 分頁查詢

    如果還不知道springboot怎么使用JPA的,先參考這篇 Springboot快速整合JPA實現增刪查改:https://blog.csdn.net/qq_35387940/article/details/102541311   接下來回到正題 示例場景,將下面表數據分頁查詢出來:  簡單模擬, mapper: service : impl: controller...

    spring data jpa 動態分頁查詢多表多條件復雜查詢實現

    本篇文章重點解決通過jpa實現動態分頁多表復雜查詢的實現 公司現在用的spring data jpa作為后臺運營框架 ,通過下圖jpa封裝的這五個方法雖然就可以實現動態分頁查詢,(關于這個接口的使用網上一大堆,這里就不再贅述了),但是如果不重寫Specification中的toPredicate方法(重寫toPredicate方法還要按照他的規則用代碼拼接sql,太麻煩…)僅僅可以實...

    猜你喜歡

    蘋果M1芯片各種不支持,但居然可以刷朋友圈!你會買單嗎?

    上個月和大家一起分享過,最新的蘋果M1芯片上支持的各種開源軟件。什么?還沒讀過?趕緊點這里:一文解讀蘋果 M1 芯片電腦上的開源軟件。 現在已經過去了半個月,想必有不少的同學都已經入手了最新的蘋果M1芯片電腦。今天呢和大家來一起分享一個只有蘋果M1芯片電腦才有的福利喲~ 現在每個人的日常生活及工作中,基本都離不開微信,大多數同學都會在辦公時開一個網頁版微信,方便溝通交流(悄悄摸魚)。但是很多人喜歡...

    動態熱修復技術的實現

    原文地址為:動態熱修復技術的實現 項目地址:https://github.com/dodola/HotFix HotFix 安卓App熱補丁動態修復框架 介紹 該項目是基于QQ空間終端開發團隊的技術文章實現的,完成了文章中提到的基本功能。 文章地址:安卓App熱補丁動態修復技術介紹 項目部分代碼從 dalvik_patch 項目中修改而來,這個項目本來是用來實現multidex的,發現可以用來實現...

    初窺SpringSecurity安全框架

    文章目錄 概念 對應依賴 創建項目 自定義登陸用戶和密碼 新增SecurityConfig配置類 修改前臺配置 重啟項目驗證 登陸頁配置:記住我 退出的問題 作為一名開發怎能不知道大名頂頂的安全框架呢?市面上流行的安全框架有:shiro和springSecurity。那么你經常用哪個框架做安全訪問控制呢?因為SpringBoot集成了SpringSecurity,所以我們這次來聊聊它 概念 Spr...

    數據結構(三)——基于數組的隊列和循環隊列

        隊Queue也是一個線性的存儲結構,原則是先入先出(FIFO),區別于棧的先進后出。就類似與排隊買票,先進入隊列的就先買票出列;入隊在一端操作(隊尾),出隊只能在另一端操作(隊首);     一個隊列的基本操作就是入隊,出隊,獲取隊列大小,判斷是否為空等等;這篇博客就是自己實現一個基于數組的隊列和循環隊列。 &...

    解決“Win 10 ipv6無網絡權限/無Internet連接權限”問題

    高校校園網有一個好處就是可以自由使用ipv6上各種BT、PT,然而ipv6由于商用不廣泛,各種ipv6解決方案不規范,導致各種使用問題。我最近遇到的問題:裝完Win 10后,已經換了hosts文件,為了上goole,問題是 ipv6就出現了無網絡權限。 經過試驗,發現核心解決方案,僅僅是使用CMD或者Windows Power Shell執行網絡配置命令即可:     &nbs...

    精品国产乱码久久久久久蜜桃不卡