【JPA CriteriaBuilder 如何使用关键字“in“】

简介: 修改公司的老项目,突然要用到这个知识点,但是自己查到的这方面的文章太少了,就自己总结了一份,亲测正确!

ps:修改公司的老项目,突然要用到这个知识点,但是自己查到的这方面的文章太少了,就自己总结了一份,亲测正确!

@Override

public Page<UserInfoDTO> UserListByConditions(QueryInfoDTO queryInfoDTO, Integer page, Integer limit) {
    Pageable pageable = PageRequest.of(page - 1, limit, Sort.Direction.DESC,"showOrder");
    Specification<UserInfo> spec = new Specification<UserInfo>() {
        @Override
        public Predicate toPredicate(Root<UserInfo> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
            List<Predicate> list = new ArrayList<Predicate>();
            if (StringUtils.isNotBlank(queryInfoDTO.getUserId())){ 
               //root.get("channelId")表示获取channelId这个字段名称
               list.add(criteriaBuilder.equal(root.get("UserId").as(String.class), queryInfoDTO.getUserId()));
               }
             if (StringUtils.isNotBlank(queryInfoDTO.getUserName())){ 
                  //like表示执行like查询,%...%表示值
                  list.add(criteriaBuilder.like(root.get("UserlName").as(String.class), "%" + queryInfoDTO.getContent() + "%"));
       
                }

            List<String> userIds = new ArrayList<>();
            userIds.add(",1,");
            userIds.add(",2,");
            userIds.add(",3,");
            userIds.add(",4,");
            list.add(criteriaBuilder.in(root.get("userId")).value(userIds ));
            Predicate[] p = new Predicate[list.size()];
            //将多个查询条件联合起来之后,返回Predicate对象
            return criteriaBuilder.and(list.toArray(p));
        }
    };
    Page<UserInfo> entitys = userInfoRepository.findAll(spec, pageable);
    Page<UserInfoDTO> dtos = new PageImpl<>(convertUserInfoEntityToDTOs(entitys.getContent()), pageable, entitys.getTotalElements() );
    return dtos;
}


重点关注

list.add(criteriaBuilder.in(root.get("userId")).value(userIds ));
如果用到in,value()的参数必须是集合。
题。

目录
相关文章
|
6月前
|
C#
30.C# 关键字 this初步学习
30.C# 关键字 this初步学习
38 1
|
6月前
|
C#
28.c#关键字base初步学习
28.c#关键字base初步学习
31 0
|
1月前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
49 8
|
5月前
|
Dart 开发者
Dart中的类型判断(is 关键字)
Dart中的类型判断(is 关键字)
122 0
|
6月前
|
存储 安全 编译器
【C/C++】C/C++编程——C++ 关键字和数据类型简介
【C/C++】C/C++编程——C++ 关键字和数据类型简介
62 2
|
11月前
|
SQL Dart 小程序
C#using关键字的使用方法
这里记录下C#中using关键字的使用方法。 Using的使用大致分别以下三种:
63 0
|
存储 编译器 Linux
C++必知必会之基础知识-常用关键字(1)
大家好,我是Linux兵工厂,在工作经常发现小伙伴们遇到一些C++的问题都是对基础知识不熟悉或理解混乱所导致的。正所谓万丈高楼平地起,作为一名合格的程序员来说,没有良好的基本功很难达到一定的高度。而工作中大部分编程问题都是基本功不扎实所导致,所以决定花些时间来整理C++相关的基本知识和基本概念供大家参考理解。 关注公众号:Linux兵工厂,领取海量Linux免费学习资料,且会不定时输出更多干货知识
|
安全
synchronized关键字 - - 三种使用方法
synchronized关键字 的 三种使用方法: 第一种 synchronized(对象) { 临界区 } 第二种 加在 非静态方法 上 第三种 加在 静态方法 上
67 0
|
SQL
基础关键字
基础关键字
86 0