依赖
<dependency>
<groupId>com.github.wenhao</groupId>
<artifactId>jpa-spec</artifactId>
<version>3.2.5</version>
</dependency>
使用
方法一:
var spec = Specifications.<User>and().eq(!Strings.isNullOrEmpty(name), "name", name)
.eq(StringUtils.isNotEmpty(nick), "nick", nick)
.build();
List<User> users = userRepository.findAll(spec);
方法二:
if (sort == null) {
sort = Sort.unsorted();
}
var all = userRepository.findAll((root, query, cb) -> {
var nickLike = cb.like(root.get("nick"), userQueryDto.getLikeNick() + "%");
var nameLike = cb.like(root.get("name"), userQueryDto.getLikeName() + "%");
var createTime = cb.greaterThanOrEqualTo(root.get("createTime"), userQueryDto.getGtCreateTime());
var lessCreateTime = cb.lessThanOrEqualTo(root.get("createTime"), userQueryDto.getLtCreateTime());
return cb.and(cb.or(nickLike, nameLike), cb.and(createTime, lessCreateTime));
}, sort);