SpringBoot_JPA框架,多条件查询的分页与不分页两种方式
以user用户模块为例,以下包括:controller、service、dao层详细代码
JPA多条件查询和后端分页关键点:Dao接口继承JpaSpecificationExecutor
1、Dao接口
package com.demo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import com.demo.entity.User;
/**
* 用户模块的dao接口
* JpaRepository 用于JPA简单查询
* JpaSpecificationExecutor 复杂动态查询,继承此接口才能在service层使用多条件查询方法
* /
public interface UserRepositories extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> {
}
2、service实现,分页/不分页
package com.demo;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import com.demo.entity.User;
import com.demo.UserRepositories ;
@Service
public class UserServices {
@Autowired
private UserRepositories userRepositories;
/**
* 多条件查询所有用户数据,不分页
* @param username 用户名称,模糊查询
* @param roleId 角色id,相等查询
* @param starttime 日期范围查询-前
* @param endtime 日期范围查询-后
*/
public List<User> getAllUsers(String username, Integer