Jpa条件查询组合查询and 和 or同时用
更多精彩文章欢迎关注公众号“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同时用的更多相关文章
- FLASK-SQLALCHEMY如何使用or和and条件进行组合查询
FLASK-SQLALCHEMY如何使用or和and条件进行组合查询 http://www.cherishlau.site/2018/03/29/flask-sqlalchemy-use-or-and ...
- Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询
1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...
- spring boot jpa 多条件组合查询带分页的案例
spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...
- yii下多条件多表组合查询以及自写ajax分页
多条件组合查询主要用到yii的CDbCriteria,这个类很多oem框架都有,非常好用. 前台表单 前台查询表单效果是这样的,多个条件组,每个组里放多个input,name为数组.当任何一个复选框被 ...
- 序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
查询窗口中可以设置很多查询条件 表单中输入的内容转为datagrid的load方法所需的查询条件向原请求地址再次提出新的查询,将结果显示在datagrid中 转换方法看代码注释 <td cols ...
- solr的多条件组合查询和solr的范围查询【转】
solr的多条件组合查询和solr的范围查询 版权声明:本文为博主原创文章,供大家参考,但不要抄袭哦! 存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到solr中,并给部分字段建立索引, ...
- jsp 多条件组合查询
web层: public String query(HttpServletRequest request, HttpServletResponse response) throws ServletEx ...
- 《MySQL数据操作与查询》- 维护学生信息、老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息
综合项目需求 一.系统整体功能 系统需支持以下功能: 维护学生信息.老师信息和成绩信息 支持按多种条件组合查询学生信息和成绩信息 学生 Student(id,班级id,学号,姓名,性别,电话,地址,出 ...
- Spring Data JPA中的动态查询 时间日期
功能:Spring Data JPA中的动态查询 实现日期查询 页面对应的dto类private String modifiedDate; //实体类 @LastModifiedDate protec ...
随机推荐
- 解决-word里无论怎么改变字体颜色,字体总是红色的
1.你遇到的问题是Word当前处于审阅状态,修改的内容显示为红色字体.2.解决办法是退出Word审阅状态,或者接受全部修订.3.不同Word版本的审阅模式不同,可在菜单栏里退出审阅,或者按鼠标右键弹出 ...
- 最大行走路线问题(DP)
在一个NxN的棋盘上,每个格子里有若干个棋子,假设起点为左上角的格子,且每次只能向下或向右走一格,问怎样走才能得到最多的棋子. 这是很简单的递推题了. 因为只能向下或者向右,所以其实我们可以把棋盘看成 ...
- HDU 4489(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=4489 解题思路这里已经说的很清楚了: http://blog.csdn.net/bossup/article/d ...
- Struts2(二)— Result结果配置、Servlet的API的访问、模型驱动、属性驱动
一.Result结果配置 1.全局和局部结果 平常我们设置跳转页面,是在action标签里面加上 result标签来控制,这种设置的页面跳转,称之为局部结果页面但是我们有时候在很多个action里 ...
- LeetCode ImplementStrstr
class Solution { public: char *strStr(char *haystack, char *needle) { if (haystack == NULL || needle ...
- csharp: string Encoding
/// <summary> /// 中文转unicode /// </summary> /// <param name="str"></p ...
- BZOJP1096[ZJOI2007]仓库建设——solution
Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用.突然有一天, ...
- FormData js对象的介绍和使用
FormData js对象的介绍和使用 FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台. 在使用ajax提交时,使用FormData对象可以减 ...
- Java学习笔记(5)----使用正则表达式解决Google Code Jam Qualification2009赛题 Alien Language
原题地址:https://code.google.com/codejam/contest/90101/dashboard#s=p0 题目描述: Problem After years of study ...
- Android 虚拟多开系列一——技术调研
参考链接:http://weishu.me Github源码链接: 国内Xposed框架源码链接 VirtualAp ...