JpaRepository动态查询sql
本文介绍JpaRepository动态查询sql
在使用前,需要导入
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
public List<MovieShow> selectMovieShow(MovieShow movieShow) {/**root :我们要查询的类型* query:添加查询条件* cb: 构建条件* specification为一个匿名内部类*/Specification<MovieShow> specification=new Specification<MovieShow>() {@Overridepublic Predicate toPredicate(Root<MovieShow> root,CriteriaQuery<?> query,CriteriaBuilder cb) {//创建一个条件的集合List<Predicate> predicates = new ArrayList<Predicate>();//判断传过来的category是否为null,如果不为null就加到条件中if(StringUtils.isNotEmpty(movieShow.getCategory())){/** cb.equal()相当于判断后面两个参数是否一致*root相当于我们的实体类的一个路径,使用get可以获取到我们的字段,因为我的category为String类型* 数据库字段的值category = 前台传过来的值movieShow.getCategory()*/predicates.add(cb.equal(root.get("category").as(String.class), movieShow.getCategory()));}//创建一个条件的集合,长度为上面满足条件的个数Predicate[] pre = new Predicate[predicates.size()];Predicate p1 = cb.like(root.get("name").as(String.class), "%"+movieShow.getName()+"%"); Predicate p2 = cb.equal(root.get("uuid").as(Integer.class), movieShow.getUuid()); Predicate p3 = cb.gt(root.get("age").as(Integer.class), movieShow.getAge());query.where(cb.and(p3,cb.or(p1,p2)));//根据id 倒序排列query.orderBy(cb.desc(root.get("release_date")));//这句大概意思就是将上面拼接好的条件返回去return query.where(predicates.toArray(pre)).getRestriction();}};//这里我们按照返回来的条件进行查询,就能得到我们想要的结果List<MovieShow> list= movieShowRepository.findAll(specification);return list;}
欢迎评论交流
JpaRepository动态查询sql相关推荐
- Linq to SQL Dynamic 动态查询
在开发中我们常需要使用动态的条件来组合查询,scotte博客里提到了MS提供的一个动态查询类库Basic Dynamic LINQ C# Sample,这个可以给我们提供不少方便,但是给的示例实在太简 ...
- Linq to sql 实现多条件的动态查询(方法一)
多条件动态查询在开发中太常见了,使用sql语句拼接很容易实现,但是在使用linq 的时候我却觉得很麻烦,思来想去,其实不然,linq 实现多条件动态查询一样可以变的很简单.话不多说,直接上例子,供大家 ...
- QueryBuilder : 打造优雅的Linq To SQL动态查询
首先我们来看看日常比较典型的一种查询Form 这个场景很简单:就是根据客户名.订单日期.负责人来作筛选条件,然后找出符合要求的订单. 在那遥远的时代,可能避免不了要写这样的简单接口: public i ...
- Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别
在上面一篇文章Linq To Sql进阶系列(六)中,我们提到了使用object的动态查询.本文在上文的基础上,再做更加深入的引申.同时修正上文中一些不妥的地方. 1, object的动态查询续 首先 ...
- php查询sqlserver2008r2,php根据请求参数ODBC动态连接SQL Server2008R2
使用场景: 1.要使用php连接SQL Server2008R2 2.要根据传入的参数来动态的切换数据库 //查询sql Server所有的数据库名 //SELECT Name FROM Master ...
- SpringBoot JPA(JpaRepository)动态查询 分页展示
大家知道Hibernate可以很轻松的根据提供条件进行动态筛选查询,那个JPA怎么实现呢,其中最为简单的就是使用Specification实现JPA的动态查询,本人也是初步接触JPA,第一次使用JPA ...
- 使用VBA动态创建SQL查询语句
在VBA使用ADO可以高效的查询数据,但是写SQL查询语句是个有些令人头痛的事情,其实在ADO中用到的SQL语句的语法并不是很复杂,很多时候是由于即要思考SQL的语法,又要用VBA的字符串连接命令,最 ...
- jpa多表联查动态_jpa多表关联动态查询(自定义sql语句)
项目中,jpa对于简单的数据库操作很方便,但如果多表关联动态查询时,需要自己去写SQL语句拼接查询条件,以下为本人学习的例子. 类似于这种多条件动态查询: 项目用的是springboot 2.1.0. ...
- mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20
一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...
最新文章
- python sorted key=str.lower_Python——sorted()函数
- Redis的数据类型详解
- Tensorflow Day18 Convolutional Autoencoder
- WordPress搬家全攻略
- vue数组操作不更新视图问题
- 无法加载身份验证插件“ caching_sha2_password”
- win11安装报错0xc1900101怎么办 Windows11安装报错0xc1900101的解决方法
- 如何将Eclipse中Web项目打成war包
- Ensemble Learning方法总结
- Atitit 机器可读护照的Machine-readable passport 规范与解析格式 目录 1. 术语	1 1.1. machine-readable zone(MRZ)	1 1.2.
- mysql5.7备份
- Apache Hive 下载与安装
- C语言 汉字码表 STM32 拼音输入法
- [cryptoverse ctf 2022] cvctf
- DDOS 攻击的防范教程
- 可以写一个表白代码吗
- ppt转换成pdf免费软件
- Android通过Canvas手绘一个折线图
- 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(六)
- Android Systrace 基础知识(10) - Binder 和锁竞争解读
热门文章
- DZ应用中心”对不起,您的网站已被设置禁止下载此应用“完美解决办法
- 索尼录音笔怎么导出录音内容_追黄宗泽新剧追到了索尼录音笔?没办法,就是便携好用颜值高...
- mac cmd 打开访达
- 程序员和产品经理之间的恩怨情仇
- 汽车业的万亿级市场缘何由康得新、康得复材开启?
- 办公型计算机配置清单,办公电脑配置清单_推荐_办公电脑配置全攻略!
- wordpress建站(空间+域名+备案)
- GD32VF103_DAC
- ssm基于大数据的智能公交平台的设计与实现毕业设计源码261620
- 再补充5种鼠标移动特效