• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • spring-data-jpa 動態條件 分頁查詢

    pom.xml配置

           <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>

    數據庫連接配置

    ############################################################
    #
    # 數據源配置 
    #
    ############################################################
    spring.datasource.url=jdbc:mysql://localhost:3306/xxxx
    spring.datasource.username=xxxx
    spring.datasource.password=xxxx
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.druid.initial-size=1
    spring.datasource.druid.min-idle=1
    spring.datasource.druid.max-active=20
    spring.datasource.druid.test-on-borrow=true
    spring.datasource.druid.stat-view-servlet.allow=true

     

    實體類user ,省去部分字段及set、get方法

    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.validation.constraints.NotNull;
    
    @Entity
    @Table(name = "gr_user")
    public class User {
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	private Integer id;
    	
    	@NotNull(message="不能為空")
    	@Column(name="name")
        private String name;
    	
        private String pwd;
    
        private String nick;
        @Column(name="role_id")
        private String roleId;
        
        @Column(name="depart_id")
        private String departId;
    

     dao層用UserRepository

    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface UserRepository extends JpaRepository<User, Integer>  {
    	 
    }

    userService層用 UserService 

    
    @Service
    @Transactional
    public class UserService {
    
    	@Autowired
    	private UserRepository userRepository;
        
        	public Page<User> findByPage(User user, Integer pageNum, Integer pageSize){
    		Pageable pageAble = new PageRequest(pageNum,pageSize,new Sort(Direction.DESC,"id"));
    		Specification<User> spec = new Specification<User>() {
    			private static final long serialVersionUID = -594262632507712037L;
    			@Override
    			public Predicate toPredicate(Root<User> root, CriteriaQuery<?> crite, CriteriaBuilder cb) {
    				List<Predicate> pr = new ArrayList<>();
    				if( user!= null && user.getName() != null){
    					pr.add(cb.like(root.get("name").as(String.class), "%"+user.getName()+"%"));
    				  //  pr.add(cb.like(root.<String>get("name"), "%"+user.getName()+"%"));
    				}
    				return cb.and(pr.toArray(new Predicate[pr.size()]));
    			}
    		};
    		return userRepository.findAll(spec,pageAble);
    	}
    
    
    
    }

    usercontroller

    @RestController
    @RequestMapping("/user")
    public class UserController {
    	
    	@Autowired
    	private UserRepository userRep;
    	@Autowired
    	private UserService userService;
    
        @RequestMapping("/page")
    	//@RequestBody(required=false)不校驗參數為空的
    	public Page<User> findByPage(@RequestBody(required=false) User user,
    			@RequestParam(required=false) Integer pageNum,
    			@RequestParam(required=false) Integer pageSize ){
    		if(pageNum == null){
    			pageNum = 0;
    		}
    		if(pageSize == null){
    			pageSize = 10;
    		}
    		return userService.findByPage(user, pageNum, pageSize);
    	}
    
    
    
    }

     測試 Postman

    測試結果

     

     

     

    版權聲明:本文為sinat_38314794原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/sinat_38314794/article/details/81083112

    智能推薦

    SpringDataJPA--查詢方式

    Spring Data JPA的查詢方式 4.1 使用Spring Data JPA中接口定義的方法進行查詢 在繼承JpaRepository,和JpaRepository接口后,我們就可以使用接口中定義的方法進行查詢 繼承JpaRepository后的方法列表 繼承JpaSpecificationExecutor的方法列表 測試count()方法和exists()方法 測試getOne()方法 ...

    mongorepository分頁條件查詢

    最近項目有用到mongodb,也是經歷了從不會到滿百度的查資料,對mongodb有了些許的理解,項目里面總想著偷懶,不想使用template的類去拼寫,就找了spring封裝好的mongorepository進行查詢,大體跟spring-data-jpa差不多,廢話不多說了 進入主題 每個版本jar包不同的話,方法會有些許不同,具體進入接口查看使用就行,下面是我項目中使用的 也是從百度找來 然后整...

    復雜條件分頁查詢

    文章目錄 一、需求分析 二、list.jsp 三、FindUserByPageServlet.java 四、動態 SQL 處理 一、需求分析 通過設置的 姓名,籍貫,郵箱相關條件可以查到符合要求的用戶,同時需要滿足分頁效果。 關鍵是如果處理數據庫部分,這里用到了技巧where 1=1 and xxx,這樣就可以達到動態處理sql 代碼的目的 二、list.jsp 需要將參數提交到 findUser...

    JSP交互---分頁查詢(條件分頁查詢)

    如上圖所示:                   1). 用戶名為空串時,點擊查詢—–>查詢所有用戶        &n...

    SqlServer

    @Tomato c#筆記 目錄 文章目錄 注 數據庫字段設計 數據庫初始化語句 連接查詢 Sql常用函數 以特定字符分割將一行數據轉為多行 日期操作 獲取自增長id 游標 循環執行插入數據 批量刪除特定表 數據庫導出腳本 View更新 trigger 判斷增刪改 sql備份 初始化表 SqlPrompt插件 注 盡量不要用in去查詢 子查詢嵌套不超過3層 數據量大可以新建臨時表查詢 count(1...

    猜你喜歡

    如何監控Tomcat的性能

    目錄 1. 下載插件 2. 上傳插件 3. 配置 1. 下載插件 下載 javamelody.jar和 jrobin-x.jar這兩個插件 2. 上傳插件 使用xftp工具將插件上傳到項目的lib目錄中: 修改這兩個插件的權限為755: 3. 配置 修改項目的web.xml文件(如果怕改錯的話,先備份一份) 加入以下代碼: 重啟tomcat: 到另一臺電腦瀏覽器訪問:http:...

    Window 窗口

    1.什么是Window 1.1、代碼層面來看,Window是一個abstract類。 1.2、解釋 Window是為頂級View提供的一個抽象類,該實現類應該作為頂級的view被添加到WindowManager中 WindowManager提供了標準的ui規則,比如:背景,標題等 僅僅有一個存在的實例PhoneWindow,當需要Window時,實例PhoneWindow即可。 2.什么是Wind...

    chapter1:圖與圖學習

    資料收集 筆記:https://app.yinxiang.com/fx/d8b1ba2c-9edd-4b91-a9b9-1d605a803993 主要來源:https://aistudio.baidu.com/aistudio/projectdetail/1258788 文章目錄 1.圖的定義 2.主要圖的算法 1.尋路和圖搜索算法 1.搜索算法 2.尋路算法 2.社群檢測 3.分層聚類 2.圖機...

    tabBar 自定義,小程序自定義底部導航欄

    創建一個自定義組件 my_tab,組件代碼在后面,先看調用自定義組件的代碼,比如我需要在index 頁面調用,就在index.json中引用組件,index.json 代碼(引用的路徑為你創建的自定義組件路徑) 我的組件目錄如下: 然后在index.wxml 中使用組件就可以 效果圖:   下面是組件代碼: 組件JS代碼 my_tab.json my_tab.wxml my_tab.wx...

    Docker容器間通訊,直接路由方式實現網絡通訊

    參考:https://yq.aliyun.com/articles/602107,修改其中的一個錯誤點。按照自己的方式整理的博文。 此時兩臺主機上的Docker容器如何直接通過IP地址進行通信? 一種直接想到的方案便是通過分別在各自主機中 添加路由 來實現兩個centos容器之間的直接通信。 方案原理分析 由于使用容器的IP進行路由,就需要避免不同主機上的容器使用了相同的IP,為此我們應該為不同的...

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