更多精彩文章欢迎关注公众号“Java之康庄大道”

条件查询,各个条件之间是and并且&&关系,其中地理信息省市区县,例如河北省,要包括其下属所有城市,每个城市包括下属区县,只选择河北省时候,要查询的是河北省所有的,他们之间是or 或者 ||关系

如果写sql,很好完成where t.id = 1 and t.name=‘hbs and (t.region='河北省‘ or t.region='石家庄市’........等等)

如果JPA怎么写条件查询呢?

感谢  https://blog.csdn.net/langyan122/article/details/80608383  这篇文章的作者。

我的应用如下所示:

public Page<Crossing> findAll(String crossingCode, String crossingName, Integer crossingType, Integer lightshape,
String region, Pageable pageable) { Page<Crossing> pageList = getCrossingDao().findAll((root,query,cb)-> { List<Predicate> list = new ArrayList<Predicate>();
if(crossingCode!=null && crossingCode!="") {
list.add(cb.like(root.get("code"), "%"+crossingCode+"%"));
}
if(crossingName!=null && crossingName!="") {
list.add(cb.like(root.get("name"), "%"+crossingName+"%"));
}
if(crossingType!=-1) {
list.add(cb.equal(root.get("crossingTypeId"), crossingType));
}
if(lightshape!=-1) {
list.add(cb.equal(root.get("lightshapeId"), lightshape));
} Predicate[] array = new Predicate[list.size()];
Predicate Pre_And = cb.and(list.toArray(array)); List<Predicate> listOr = new ArrayList<Predicate>();
if(region!="") {
String arr[] = region.split(",");
for(int i=0;i<arr.length;i++) {
if(arr[i]!=null && arr[i]!="") {
listOr.add(cb.equal(root.get("regionId"), arr[i])); }
}
Predicate[] arrayOr = new Predicate[listOr.size()];
Predicate Pre_Or = cb.or(listOr.toArray(arrayOr));
return query.where(Pre_And,Pre_Or).getRestriction();
}else{
return null;
} }, pageable);     return pageList;
}

遇到的困难,记载之;

Jpa条件查询组合查询and 和 or同时用的更多相关文章

  1. FLASK-SQLALCHEMY如何使用or和and条件进行组合查询

    FLASK-SQLALCHEMY如何使用or和and条件进行组合查询 http://www.cherishlau.site/2018/03/29/flask-sqlalchemy-use-or-and ...

  2. Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询

    1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...

  3. spring boot jpa 多条件组合查询带分页的案例

    spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...

  4. yii下多条件多表组合查询以及自写ajax分页

    多条件组合查询主要用到yii的CDbCriteria,这个类很多oem框架都有,非常好用. 前台表单 前台查询表单效果是这样的,多个条件组,每个组里放多个input,name为数组.当任何一个复选框被 ...

  5. 序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询

    查询窗口中可以设置很多查询条件 表单中输入的内容转为datagrid的load方法所需的查询条件向原请求地址再次提出新的查询,将结果显示在datagrid中 转换方法看代码注释 <td cols ...

  6. solr的多条件组合查询和solr的范围查询【转】

    solr的多条件组合查询和solr的范围查询 版权声明:本文为博主原创文章,供大家参考,但不要抄袭哦! 存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到solr中,并给部分字段建立索引, ...

  7. jsp 多条件组合查询

    web层: public String query(HttpServletRequest request, HttpServletResponse response) throws ServletEx ...

  8. 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息

    综合项目需求 一.系统整体功能 系统需支持以下功能: 维护学生信息.老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息 学生 Student(id,班级id,学号,姓名,性别,电话,地址,出 ...

  9. Spring Data JPA中的动态查询 时间日期

    功能:Spring Data JPA中的动态查询 实现日期查询 页面对应的dto类private String modifiedDate; //实体类 @LastModifiedDate protec ...

随机推荐

  1. 关于JAVA是值传递还是引用传递的问题

    1.概念 值传递:方法调用时,实际传入的是它的副本,在方法中对值的修改,不影响调用者的值. 引用传递:方法调用时,实际传入的是参数的实际内存地址,调用者和调用方法所操作的参数都指向同一内存地址,所以方 ...

  2. Springboot @ResponseBody返回中文乱码

    最近我在把Spring 项目改造Springboot,遇到一个问题@ResponseBody返回中文乱码,因为response返回的content-type一直是application/json;ch ...

  3. mysql数据库重点(基础优化)

    ### Mysql性能优化 尽量不要写select * ,如果需要全表数据,使用select 加所有字段列名称查询代替* 尽量减少字段列的数学计算,如:where num * 2 >= 30,可 ...

  4. stringstream快速实现String和int之间的转换

    需要包含头文件”sstream” #include <iostream> #include <string> #include <sstream> using na ...

  5. java 自定义异常处理

    package com.direct.work; import java.io.FileNotFoundException; import java.io.IOException; import ja ...

  6. 基于jQuery的数字键盘插件

    有时,我们需要在网页上使用软键盘.今天,就给大家带来一个基于jQuery的数字键盘插件,除了jQuery,不需要依赖任何文件资源.纯数字键盘,有退格,有清除,不支持输入小数(需要的可以自己改一下,主要 ...

  7. [POI2007]EGZ-Driving Exam

    能到达所有路的充要条件是能到达左右两端的路 用vector反向建边对每条路左右分别求个最长不上升子序列 预处理出每条路向左向右分别需要多建多少路才能到达最左端和最右端 然后跑个\(\Theta(n)\ ...

  8. css3+javascript实现翻页幻灯片

    先上效果图 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

  9. 131.004 监督学习项目 | 为CharityML寻找捐献者

    监督学习: 为CharityML寻找捐献者   开始 在这个项目中,你将使用1994年美国人口普查收集的数据,选用几个监督学习算法以准确地建模被调查者的收入.然后,你将根据初步结果从中选择出最佳的候选 ...

  10. php 函数func_get_args()、func_get_arg()与func_num_args()之间的区别

    php经常会有一些看似相近的函数,然而区别很大.[func_get_arg(),func_get_args(),func_num_args()]的区别,我们先看一下,下面的实例代码 从上面的结果中我们 ...