zoukankan      html  css  js  c++  java
  • 关于JPA动态SQL查询

    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;
        }
  • 相关阅读:
    MARK--2020年第一次事故
    MySQL MHA--基于Python实现GTID模式的主从切换
    MySQL Replication--复制延迟排查
    MySQL InnoDB Engine--多版本一致性视图(MVCC)
    MySQL InnoDB Engine--数据页存储和UPDATE操作 2
    MySQL InnoDB Engine--数据页存储和UPDATE操作
    Semantic UI基础使用教程
    sqlserver 批量修改数据库表主键名称为PK_表名
    navicate premium连接sqlserver时报08001错误的解决方法
    checklistbox的使用
  • 原文地址:https://www.cnblogs.com/xzmxddx/p/10975733.html
Copyright © 2011-2022 走看看