1.继承接口

2.下面是简单的操作---自己写过的,下次再整理一下

    public Page<IdddsMember> list(MemberSearch search, Pageable pageable) {
Page<IdddsMember> page = memberRepository.findAll((root, query, cb) -> {
List<Predicate> predicates = new ArrayList<>();
//groupId
if (StringUtils.isNotEmpty(search.getSearchGroupId())) {
predicates.add((cb.equal(root.get("idddsMemberGroup").get("id"), search.getSearchGroupId())));
} else {
CriteriaBuilder.In<String> in = cb.in(root.get("idddsMemberGroup").get("id"));
List<String> groupIdList = memberGroupRepository.findIdsByStatus(StatusEnum.normal.getDesc());
for (String str : groupIdList) {
in.value(str);
}
predicates.add(in);
}
//role角色
if (StringUtils.isNoneBlank(search.getSearchRole())) {
predicates.add((cb.equal(root.get("role"), search.getSearchRole())));
}
//status状态
if (StringUtils.isNoneBlank(search.getSearchStatus())) {
predicates.add((cb.equal(root.get("status"), search.getSearchStatus())));
}
//名字,公司模糊查询
if (StringUtils.isNoneBlank(search.getSearchName())) {
predicates.add((cb.like(root.get("trueName"), "%" + search.getSearchName() + "%")));
}
if (StringUtils.isNoneBlank(search.getSearchOrganization())) {
predicates.add((cb.like(root.get("organization"), "%" + search.getSearchOrganization() + "%")));
}
//时间,这里是个坑,数据库字段为created_time
if (search.getStart() != null) {
predicates.add(cb.greaterThanOrEqualTo(root.get("createdTime"), DateUtils
.parseDate(DateUtils.formatDate(search.getStart(), "yyyy-MM-dd") + " 00:00:00")));
}
if (search.getEnd() != null) {
predicates.add(cb.lessThanOrEqualTo(root.get("createdTime"), DateUtils
.parseDate(DateUtils.formatDate(search.getEnd(), "yyyy-MM-dd") + " 23:59:59")));
}
query.where(predicates.toArray(new Predicate[]{}));
//排序
if (StringUtils.isNoneBlank(search.getOrderBy())) {
if ("desc".equals(search.getSortType())) {
//倒序
query.orderBy(cb.desc(root.get(search.getOrderBy())));
} else {
//正序
query.orderBy(cb.asc(root.get(search.getOrderBy())));
}
}
return null;
}, pageable);
return page;
}

关于JPA动态SQL查询的更多相关文章

  1. SQL Server-聚焦深入理解动态SQL查询(三十二)

    前言 之前有园友一直关注着我快点出SQL Server性能优化系列,博主我也对性能优化系列也有点小期待,本来打算利用周末写死锁以及避免死锁系列的接着进入SQL Server优化系列,但是在工作中长时间 ...

  2. SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?

    前言 之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比ex ...

  3. ibatis 中动态SQL查询和动态标签嵌套的使用

    ibatis 动态查询对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 / 关系映射(O/R Mapping)解 ...

  4. 一步步学Mybatis-怎么样实现动态SQL查询(6)

    上一章我们已经讲完了关于Mybatis的分页用法,其实MyBatis 还具有的一个强大的特性之一通常是它的动态 SQL 能力. 如果你有使用 JDBC 或其他 相似框架的经验,你就明白要动态的串联 S ...

  5. 获取动态SQL查询语句返回值(sp_executesql)

    在写存储过程时经常会遇到需要拼接SQL语句的情况,一般情况下仅仅是为了执行拼接后的语句使用exec(@sql)即可. 而今天的一个存储过程却需要获取动态SQL的查询结果. 需求描述:在某表中根据Id值 ...

  6. 一个jpa动态模糊查询的实现

    最近一直在是用spring data jpa,使用起来确实方便,如果是单表的操作基本上通过方法名都可以实现,下面是一个 Specification 实现动态模糊查询的例子这个查询是通过JpaSpeci ...

  7. SQL Server 2012 - 动态SQL查询

    动态SQL的两种执行方式:EXEC @sql 和 EXEC sys.sp_executesql @sql DECLARE @c_ids VARCHAR(200) SET @c_ids ='1,2' - ...

  8. Mybatis中多个参数的问题&&动态SQL&&查询结果与类的对应

    ### 1. 抽象方法中多个参数的问题 在使用MyBatis时,接口中的抽象方法只允许有1个参数,如果有多个参数,例如: Integer updatePassword( Integer id, Str ...

  9. mybatis 动态SQL查询总结

    背景 ××项目需要提供系统部分函数第三方调用接口,基于安全性和避免暴露数据库表信息的基础上进行函数接口的设计,根据第三方调用身份的权限提供某张表的自定义集合.本项目基于mybatis的持久层框架,支持 ...

随机推荐

  1. 【Python基础】09_Python中的元组

    1.元组的定义 Tuple (元组)与列表类似,元组的元素 不能修改 元组通常保存 不同类型 的数据 元组用()定义 info_tuple = ("张三", 18, 1.75) 定 ...

  2. varnish HTTP头

    Cache-Control:指定了缓存如何处理内容.varnish关心max-age参数,并用它来计算对象的TTL.“Cache-Control:no-cache”是被忽略的.Age:varnish添 ...

  3. ie/chorme 清除缓存 刷新js,css

    1 有时候你发现你刚改过的js 没有用,然后就是你的浏览器 没有清楚缓存,它可能还是保存的之前的 网页文件: chorme 浏览器下(版本:ver 59.0.3071.104(正式版本) (64 位) ...

  4. 原生 JS 绑定事件 移除事件

    监听事件的绑定与移除主要是addEventListener和removeEventListener的运用. addEventListener语法 element.addEventListener(ty ...

  5. zepto学习(二)之tap事件以及tap事件点透处理

    前言 为什么通过touch可以触发click事件? touch事件的来源 PC网页上的大部分操作都是用鼠标的,即响应的是鼠标事件,包括mousedown.mouseup.mousemove和click ...

  6. [NOIP10.6模拟赛]2.equation题解--DFS序+线段树

    题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...

  7. Category与Extension详解

    自己做笔录 用来后来回顾.. (一) Category 1.什么是category category是objective-C 2.0之后添加的语言特性,别人口中的分类.类别其实都是指category. ...

  8. 安卓开发之Toolbar返回键

    本文前三步演示了为Toolbar添加返回键并实现返回的步骤,第四步给出了设置返回键颜色的方法. 1.在xml布局中引用toolbar: <android.support.design.widge ...

  9. 2.第一个MyBatis程序

    1.导入jar包 2.定义实体类 3.创建对应的表 4.定义Dao接口 public interface StudentDAO { public void saveStudent(Student s) ...

  10. linux终端c语言改变输出字体颜色

    Linux下C改变输出字体颜色 例: #include int main() { printf("\033[31mThis is RED.\n\033[0m"); return 0 ...