jpa specification条件查询
来源:互联网 发布:js工厂模式方法 编辑:程序博客网 时间:2024/05/18 11:46
spring data jpa 通过创建方法名来做查询,只能做简单的查询,那如果我们要做复杂一些的查询呢,多条件分页怎么办,这里,spring data jpa为我们提供了JpaSpecificationExecutor接口,只要简单实现toPredicate方法就可以实现复杂的查询
1.首先让我们的接口继承于JpaSpecificationExecutor
- /*
- * 实现带查询条件的分页效果 id>5
- * 调用JpaSpecificationExecutor的page<T> findAll(Speciation<T>,PageAble pageable)
- * specification:封装了JPA Criteria 查询的条件
- * pageable:封装了请求分页的消息,例如pageno,pagesize,sort
- */
- @Test
- public void testJpaSpeciationExecutor(){
- int pageNo=0;
- int pageSize=5;
- PageRequest pageRequest=new PageRequest(pageNo, pageSize);
- //通常使用Specification 的匿名内部类,
- Specification<Person> specification=new Specification<Person>() {
- /*
- * @param root:代表的查询的实体类
- * @param query:可以从中得到Root对象,即告知JPA Criteria查询要查询哪一个实体类,
- * 还可以来添加查询条件,还可以结合EntityManager对象得到最终查询的TypedQuery 对象
- * @Param cb:criteriabuildre对象,用于创建Criteria相关的对象工程,当然可以从中获取到predicate类型
- * @return:代表一个查询条件
- */
- @Override
- public Predicate toPredicate(Root<Person> root,
- CriteriaQuery<?> query, CriteriaBuilder cb) {
- // Path path=root.get("id");
- // Predicate predicate=cb.gt(path, 5);
- Predicate p1=cb.like(root.get("id").as(String.class), "%"+"1"+"%");
- Predicate p2=cb.equal(root.get("lastName").as(String.class), "sd");
- Predicate p3=cb.like(root.get("email").as(String.class), "%s%");
- // 构建组合的Predicate示例:
- Predicate p = cb.and(p3,cb.or(p1,p2));
- return p;
- }
- };
- Page<Person> page=personRepotory.findAll(specification,pageRequest);
- System.out.println("总记录数"+page.getTotalElements());
- System.out.println("当前第几页"+page.getNumber());
- System.out.println("总页数"+page.getTotalPages());
- System.out.println("当前页面的List"+page.getContent());
- System.out.println("当前页面的记录数"+page.getNumberOfElements());
- }
0 0
- jpa specification条件查询
- jpa多条件查询重写Specification的toPredicate方法
- Hibernate JPA Specification重写toPredicate多条件查询
- jpa多条件查询重写Specification的toPredicate方法
- 3 Spring JPA Specification 查询
- Spring Data JPA Specification查询
- JPA Specification常用查询+排序
- jpa 条件查询语句
- jpa多条件查询
- spring-data-jpa Specification 拼接复杂查询
- JPA查询之Specification以及HQL、SQL查询
- jpa多条件查询方法
- jpa条件查询和分页
- Spring JPA 复杂条件查询
- JPA多条件查询+分页
- jpa小记:注解条件查询
- Spring data JPA使用Specification实现动态查询例子
- Spring jpa data多条件分页查询
- 基础知识普及之BS架构/CS架构
- ScrollView嵌套WebView滑动冲突问题解决
- 小白鼠初试NDK
- 编译tensorflow并在Android上运行图像分类
- linux 编写监测脚本,如果停掉自动执行重启操作,并且发送邮件通知
- jpa specification条件查询
- Eclipse 在开发中使用到的快捷键 提高开发效率
- 交换机原理
- 关于最近面试的感受
- Spring官方文档翻译(1~6章)
- xmlhttprequest cannot load
- eclipse在选中一个变量之后,怎样让所有相同的变量都有灰色背景显示
- rsa加密算法的理解
- Java单例模式之饱汉式和饥汉式写法