动态拼接查询条件
private
Specification<InfoPushBasic> getWhereClause(
final
InfoPushSearch infoPushBasicSearch){
return
new
Specification<InfoPushBasic>() {
@Override
public
Predicate toPredicate(Root<InfoPushBasic> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
root = query.from(InfoPushBasic.
class
);
List<Predicate> predicate =
new
ArrayList<>();
String infoType = infoPushBasicSearch.getInfoType();
String pushWay = infoPushBasicSearch.getPushWay();
predicate.add(cb.equal(root.get(
"createrId"
), infoPushBasicSearch.getUserId()));
if
(infoType!=
null
){
In<Object> in = cb.in(root.get(
"infoTypeCode"
));
String[] infoTypeArray = infoType.split(
","
);
for
(Serializable infoTypeCode : infoTypeArray) {
in.value(infoTypeCode);
}
predicate.add(in);
}
if
(pushWay!=
null
){
Join<InfoPushBasic,PushWayBasic> pushWayJoin = root.join(root.getModel().getSingularAttribute(
"pushWayBasic"
,PushWayBasic.
class
),JoinType.LEFT);
String[] pushWayArray = pushWay.split(
","
);
Predicate orPre = cb.equal(root.get(
"createrId"
),
"createrId"
);
for
(String pushWayCode : pushWayArray) {
orPre = cb.or(orPre, cb.like(pushWayJoin.get(
"pushWayCode"
).as(String.
class
),
"%"
+ pushWayCode +
"%"
));
}
predicate.add(orPre);
}
if
(infoPushBasicSearch.getChannelState()!=
null
){
predicate.add(cb.equal(root.get(
"channelState"
).as(String.
class
), infoPushBasicSearch.getChannelState()));
}
if
(infoPushBasicSearch.getPushPeriodBegin()!=
null
){
predicate.add(cb.greaterThanOrEqualTo(root.get(
"pushPeriodBegin"
).as(Date.
class
), infoPushBasicSearch.getPushPeriodBegin()));
}
if
(infoPushBasicSearch.getPushPeriodEnd()!=
null
){
predicate.add(cb.lessThanOrEqualTo(root.get(
"pushPeriodEnd"
).as(Date.
class
), infoPushBasicSearch.getPushPeriodEnd()));
}
Predicate[] pre =
new
Predicate[predicate.size()];
return
query.where(predicate.toArray(pre)).getRestriction();
}
};
}
相关推荐
总的来说,JPA分页查询和条件分页查询为开发者带来了极大的便利,它减少了对SQL的直接操作,提高了代码的可读性和可维护性。通过合理地运用Spring Data JPA的特性,可以构建出高效、灵活的数据库访问层。在设计和...
Spring Data JPA 分页查询示例代码 Spring Data JPA 是一个基于 Java Persistence API(JPA)的数据访问技术,提供了一个简洁的方式来访问关系数据库。分页查询是数据库查询中的一种常见操作,Spring Data JPA 提供...
SpringBoot Jpa分页查询配置方式解析 在本文中,我们将详细介绍 SpringBoot Jpa 分页查询配置方式的解析,通过示例代码介绍了非常详细,对大家的学习或者工作具有一定的参考学习价值。 SpringBoot Jpa 分页查询...
springboot+JPA简单的示例,代码有注释。带有mysql的sql语句,编写环境是java8, ide是IDEA,连接数据库的连接需要修改,需要安装lombok插件,以免写set和get方法。代码中有分页查询等示例。
在服务层,我们可以注入JpaRepository,并利用它的findAll(Pageable pageable)方法来执行分页查询。例如: ```java public interface UserRepository extends JpaRepository, Long> { } // 在服务层 public ...
jpa查询详解 JPA(Java Persistence API)是一种 Java 持久层 API,用于处理 Java 对象和关系数据库之间的 Mapping。JPA 查询是 JPA 中的一种重要机制,用于从数据库中检索数据。在本文中,我们将详细介绍 JPA 查询...
实际上,Spring Data Jpa对于分页以及排序的查询也有着完美的支持。下面,我们来学习如何通过Pageable来对数据库进行分页查询。 添加Maven依赖 首先,我们需要引入Jpa,数据库直接使用hsqldb内存数据库就可以了。...
本篇工作笔记将深入探讨如何在JPA中使用@Query进行分页查询,并通过一个实例来展示其具体应用。 首先,我们需要了解分页查询的基本概念。在处理大量数据时,为了提高用户体验和性能,通常不会一次性加载所有记录,...
总的来说,这个项目是一个典型的Spring Boot后端开发与Thymeleaf前端展示的示例,通过JPA实现了与数据库的交互,展示了如何在一个Web应用中实现基础的CRUD操作和分页查询,以及动态下拉框的实现,对于初学者来说是一...
`Hibernate+Struts分页代码.mht`可能包含了使用Struts框架(另一种Java Web框架)与Hibernate进行分页查询的示例代码。Struts提供了Action和ActionForm等组件来处理用户请求,结合Hibernate可以实现数据的检索和展示...
在Spring Data JPA中,实现复杂或多条件组合的分页查询是一项常见的任务,这有助于高效地检索和展示大量数据。Spring Data JPA通过提供便捷的API使得开发者可以轻松地处理数据库查询,包括分页和排序。下面将详细...
在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...
为了更好地理解这两种方法,我们可以参考“SpringBoot分页查询功能的实现方法.png”这个图片文件,它可能展示了代码示例或者执行结果的对比。 在实际项目中,使用Spring Data JPA等框架实现分页查询更推荐,因为...
使用Bootstrap4 + Vue2实现分页查询的示例代码 在这篇文章中,我们将讨论如何使用Bootstrap4和Vue2实现分页查询的示例代码。 Bootstrap4是一个流行的前端框架,提供了许多有用的UI组件来快速构建响应式布局,而Vue2...
在实际项目中,我们还可以通过Spring Data JPA的Pageable接口或者MyBatis的PageHelper插件来更方便地实现分页查询。这些工具或框架提供了更高级的分页功能,例如排序、缓存等。 总的来说,Hibernate的分页查询封装...
这个"java实现分页示例代码共6页.pdf.zip"文件很可能包含了一个详细的教程或者示例代码,用于指导开发者如何在Java环境中实现分页功能。 首先,让我们了解分页的基本概念。分页通常涉及两个主要部分:前端展示和...
总的来说,这个项目提供了完整的Spring Boot、Hibernate、JPA和Thymeleaf整合示例,涵盖了基础的Web开发功能,并且经过测试确保可运行,对于初学者来说是很好的学习资源。通过这个项目,开发者可以深入理解这些技术...
3. **Specifications**: Spring Data JPA 提供了 `Specification` 接口,用于构建复杂的动态查询。这使得在运行时可以根据需要构建灵活的查询条件,无需硬编码到 repository 方法中。 4. **JPA Entity Mapping**: ...