Java : Hibernate 动态+分页+自定义字段+自定义实体类查询

// 组合查询
public List<ListBookDTO> listSetDSL(PublishingHouse publishingHouse,Integer minDiscount, Integer maxDiscount, Integer minStocks, Integer maxStocks, Integer page, Integer pageSize) {
CriteriaBuilder builder = em.getCriteriaBuilder();
// 指明返回类型
CriteriaQuery<ListBookDTO> criteriaQuery = builder.createQuery(ListBookDTO.class);
Root<Book> root = criteriaQuery.from(Book.class);
// 动态条件
List<Predicate> pList = new ArrayList<>();
if (publishingHouse != null) {
pList.add(builder.isNotNull(root.get("publishingHouse")));
pList.add(builder.equal(root.get("publishingHouse").as(PublishingHouse.class), publishingHouse));
}
if (minDiscount != null) {
pList.add(builder.isNotNull(root.get("discount")));
pList.add(builder.greaterThan(root.get("discount"), minDiscount));
}
if (minDiscount == null && maxDiscount != null) {
pList.add(builder.isNotNull(root.get("discount")));
pList.add(builder.lessThan(root.get("discount"), maxDiscount));
}
if (minStocks != null) {
pList.add(builder.isNotNull(root.get("stocks")));
pList.add(builder.greaterThan(root.get("stocks"), minStocks));
}
if (maxStocks != null) {
pList.add(builder.isNotNull(root.get("stocks")));
pList.add(builder.lessThan(root.get("stocks"), maxStocks));
}
Predicate[] predicates = new Predicate[pList.size()];
criteriaQuery.where(builder.and(pList.toArray(predicates))); // 条件
criteriaQuery.orderBy(builder.desc(root.get("id"))); // 排序
criteriaQuery.select(builder.construct(ListBookDTO.class,root.get("id"), root.get("name"), root.get("publishingHouse")));
TypedQuery<ListBookDTO> query = em.createQuery(criteriaQuery);
query.setFirstResult(page - 1).setMaxResults(pageSize); // 分页
return query.getResultList();
}

转载于:https://www.cnblogs.com/cccy0/p/11278168.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR视觉健康标准在穗发布 专家:VR使用不要超过45分钟

来源&#xff1a;VR每日必看近期&#xff0c;“元宇宙”新兴概念备受关注&#xff0c;虚拟现实&#xff08;下称“VR”&#xff09;技术也被国内外媒体评为“第四次工业革命的钥匙之一”。但是&#xff0c;有不少人对VR眼镜等设备感到担忧&#xff1a;使用它会损害视力吗&#…

vue-day04-vue前端交互

文章目录接口调用方式异步promise基于Promise发送Ajax请求Promise 基本API实例方法.then().catch().finally()静态方法.all().race()fetch概览fetch请求参数&#xff08;图片记录&#xff09;fetch API 中的 HTTP 请求fetchAPI 中 响应格式axiosaxios基础用法axios的响应结果ax…

系统上线日期被老外逼得延期了!

在我自己的印象中&#xff0c;一直以来&#xff0c;以为老外做事是比较严禁的&#xff0c;而且是比较高效的&#xff01;没有想到&#xff0c;居然完全不是这么回事&#xff01; a) 不听从中方任何建议&#xff0c;一意孤行&#xff01; b) 事实证明他们的错误之后&#xff0c;…

用数学范畴定义生命的尝试

来源&#xff1a;CreateAMind介绍一篇关于生命构建的论文Polynomial Life: the Structure of Adaptive Systems Toby St. Clere Smithe Topos Institute tobytopos.institute关键词&#xff1a;精确地形式化概念&#xff1b;是什么赋予了物理系统生命&#xff1b;贝叶斯、 信念…

git-从入门到熟悉

文章目录Git历史Git与svn对比SvnGitgit工作流程Git的安装软件下载软件安装安装git for windows安装TortoiseGit安装中文语言包使用git管理文件版本创建版本库使用GitBash使用TortoiseGit添加文件添加文件过程工作区和暂存区修改文件提交修改查看修改历史差异比较还原修改删除文…

java之spring mvc之拦截器

1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的。 2. 自定义实现一个拦截器的步骤&#xff1a; a). 定义一个实现 HandlerInterceptor 接口 的类 public class MyInterceptor implements HandlerInterceptor{/*** 在处理方法…

王飞跃谈正来临的第五次工业革命:“未来一定有多个平行的你”

来源&#xff1a;来源&#xff1a;南方周末王飞跃&#xff0c;中国自动化学会副理事长兼秘书长&#xff0c;中科院复杂系统管理与控制国家重点实验室主任。其主要研究领域为智能科学、社会计算、平行系统、知识自动化和复杂系统的建模、分析与管理&#xff0c;是智能控制方面的…

JS_01JavaScript基础笔记

文章目录JavaScript简介JavaScript简介JavaScript发展史JavaScript基础语法JavaScript_语法_与html结合方式JavaScript_语法_注释&数据类型JavaScript_语法_变量JavaScript_语法_变量_typeofJavaScript_语法_一元运算符JS-基本对象FunctionArrayDateMathRegExpGlobalJavaSc…

【一句日历】2019年8月

【2019年8月1日星期四】 没有钱、没有社会地位、没有文化&#xff0c;人很难掌握自己的命运。 ——王小波 【2019年8月2日星期五】 犹太传统认为&#xff0c;有些愤怒是允许的&#xff0c;并且认为这些愤怒是重要的和不可或缺的&#xff0c;那就是对不公正表示愤怒。但是那种毫…

著名的假设“缸中之脑”,我们怎么确定自己不是活在电脑程序中?

来源&#xff1a;科学的乐园看过电影《黑客帝国》吗&#xff0c;或者玩过游戏《恶灵附身》吗&#xff1f;黑客帝国剧照在电影《黑客帝国》中&#xff0c;主角发现自己所在的“现实世界”实际上是由一个计算机人工智能系统控制。也就是说他的世界实际上是一个由程序编码的虚拟世…

01_MySQL基础课堂笔记

文章目录数据库的基本概念MySQL数据库软件SQLDDL:操作数据库、表DML&#xff1a;增删改表中数据DQL&#xff1a;查询表中的记录1.概览2. 基础查询3. 条件查询数据库的基本概念 MySQL数据库软件 安装卸载配置 SQL 数据库的基本概念 1. 数据库的英文单词&#xff1a; DataBa…

excel保存超过15位数据不变科学计数法的方法

1.csv保存超过11位的长数字时会变成科学计数法&#xff0c;通过设置单元格格式通用0可恢复为数字。当长度超过15位时恢复后超过15位的部分全部为零是因为csv只显示15位有效数字&#xff0c;解决办法在输入前先输入英文状态的单引号&#xff0c;然后再输入数字&#xff0c;如果批…

从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...

来源&#xff1a;募格课堂、科学网2022年1月21日&#xff0c;河北科技大学韩春雨团队在Nucleic Acids Research&#xff08;IF17&#xff09;在线发表题为“A Cas6-based RNA tracking platform functioning in a fluorescence-activation mode ”的研究论文。在这篇新论文中&a…

02_MySQL约束课堂笔记

文章目录DQL:查询语句排序插叙概览聚合函数分页查询约束非空约束唯一约束主键约束外键约束数据库的设计一对多/多对多/一对一范式数据库的备份和还原数据库的备份和还原1. DQL:查询语句1. 排序查询2. 聚合函数3. 分组查询4. 分页查询2. 约束 3. 多表之间的关系 4. 范式 5. 数据…

SQL Server 2005: Constraints

Moved to http://blog.tangcs.com/2008/05/28/sql-server-2005-constraints/转载于:https://www.cnblogs.com/WarrenTang/archive/2008/05/28/1209123.html

科技热点思考:元宇宙发展及其风险挑战

来源&#xff1a;创新研究2021年10月&#xff0c;坐拥30亿用户的全球社交巨头脸书&#xff08;Facebook&#xff09;更名“Meta”引爆元宇宙概念&#xff0c;2021年成为当之无愧的“元宇宙元年”。企业抢占高地、资本利益冲动、媒体舆论炒作、个体对虚拟世界的向往等多种因素促…

03_MySQL多表事务课堂笔记

文章目录多表查询&#xff1a;多表查询的分类外链接查询子查询子查询不同情况多表查询练习事务对于脏读&#xff0c;不可重复读&#xff0c;幻读的一点理解&#xff0c;看懂红字很关键DCL&#xff1a;1. 多表查询2. 事务3. DCL多表查询&#xff1a; * 查询语法&#xff1a;sel…

CSS每日学习笔记(2)

7.31.2019 1.CSS定位&#xff1a;允许你定义元素框相对于其正常位置应该出现的位置&#xff0c;或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。 CSS 有三种基本的定位机制&#xff1a;普通流、浮动和绝对定位。除非专门指定&#xff0c;否则所有框都在普通流中定位。…

从《黑客帝国》说起,我们如何证明这个世界不是一个系统?

大数据文摘出品来源&#xff1a;nautil尽管《黑客帝国》第四部带给我们的震撼已不如前作&#xff0c;但我们仍能回想起20多年前看第一部时的激动。以及那样的一部作品带给我们的思考。正如在电影开头&#xff0c;尼奥的身体和大脑封锁在一个非模拟世界的吊舱里&#xff0c;与另…

day05_vue路由

文章目录1.路由的概念2.前端路由的初体验3.Vue Router简介4.Vue Router的使用步骤(★★★)5.嵌套路由&#xff0c;动态路由的实现方式A.嵌套路由的概念(★★★)B.动态路由匹配(★★★)7.命名路由以及编程式导航A.命名路由&#xff1a;给路由取别名B.编程式导航(★★★)8.实现后…