• <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...

    神奇的Batch Normalization 如果一個模型僅訓練BN層會是什么樣的

    您可能會感到驚訝,但這是有效的。 ? 最近,我閱讀了arXiv平臺上的Jonathan Frankle,David J. Schwab和Ari S. Morcos撰寫的論文“Training BatchNorm and Only BatchNorm: On the Expressive Power of Random Features in CNNs”。 這個主意立刻引起了...

    猜你喜歡

    用Python實現校園通知更新提醒

    前言 這個項目實已經在一個月前已經完成了,一直都想寫一篇博客來總結這個過程中遇到的一些問題。但最近一個月來都比較忙,所以一直拖到了現在。 首先說說起因吧,我沒事的時候,總喜歡依次點開學校主頁、教務處、圖書館以及學院的網站,看看有沒有什么新通知,雖然大多與我無關。恰逢最近正在學Python,經常聽到別人說用Python寫爬蟲很簡單,但自己尚未接觸過爬蟲。于是抱著試一試的心態看了幾篇關于Python爬...

    spring_ioc相關_第一章

    1 spring是一站式框架,在javaee的三層結構中,每一層都提供不提并的解決技術 web層:springMVC service層:spring的ioc dao層:spring的jdbcTemplate 2 javaee為避免兩個類之間出現耦合,則把對象的創建交給spring進行管理,spring的ioc操作:(1)ioc的配置文件方式;(2)ioc注解方式 3 ioc的底層原理使用技術(1)...

    【Python+OpenCV】視頻流局部區域像素值處理-一種特征提取方法

    參考我之前寫的處理圖片的文章:Python+OpenCV實現【圖片】局部區域像素值處理(改進版) 開發環境:Python3.6.0 + OpenCV3.2.0 任務目標:攝像頭采集圖像(例如:480*640),并對視頻流每一幀(灰度圖)特定矩形區域(480*30)像素值進行行求和,得到一個480*1的數組,用這480個數據繪制條形圖,即在逐幀采集視頻流并處理后“實時”顯示采...

    JavaWeb——【前端】——注冊頁面

    頁面效果 實現代碼 注意事項 主要使用的bootstrap樣式 如果想引用,不要直接復制,沒用的。 先介紹下所引用的文件: boostrap的js、bootstrap的css、jquery的js、以及自己編寫的register.css。 因為博主用的thymeleaf語法,所以有th符號。 若要使用時,根據個人情況導入相應的依賴。...

    網站HTTP升級HTTPS完全配置手冊

    本文由葡萄城技術團隊于博客園原創并首發 轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 今天,所有使用Google Chrome穩定版的用戶迎來了v68正式版首個版本的發布,詳細版本號為v68.0.3440.75,上一個正式版v67.0.3396.99發布于6月13日,自Chrome 68起,當在加載非HTTPS站點時,都會在地址欄上明確標記為&ldqu...

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