spring-data-jpa动态条件查询
2024-09-04 12:38:13
//获取动态条件的集合
List<Long> list = new ArrayList<Long>();
Long sysUserId = currentUser.getSysUserId();
if (sysUserId != null) {
SysUser sysUser = sysUserRepository.findOne(sysUserId);
if (sysUser != null) {
String groupItemIds = sysUser.groupItemIds();
if (groupItemIds != null && !groupItemIds.isEmpty()) {
String[] str = StringUtils.split(groupItemIds,",");
for (String s : str) {
if (s != null && !s.isEmpty() && s != "") {
list.add(Long.valueOf(s));
}
}
}
}
}
//封装Specification查询条件
Specification<Goods> spec = (root, query, cb) -> {
List<Predicate> predicates = new ArrayList<Predicate>(); List<Predicate> preList = new ArrayList<Predicate>();
if (list != null && list.size()>0) {
preList.add(root.<Long>get("groupItemId").in(list));
}
if (sysUserId != null) {
Predicate predicate = cb.equal(root.get(Goods_.crtUserId), sysUserId);
preList.add(predicate);
}
Predicate p = cb.or(preList.toArray(new Predicate[preList.size()]));
predicates.add(p); if (!predicates.isEmpty()) {
return cb.and(predicates.toArray(new Predicate[0]));
} else {
return null;
}
}; Page<Goods> pageresult = goodsRepository.findAll(spec, pageable);
最新文章
- EXT5 时间框控制(开始时间不能大于结束时间)
- Singleton
- Linux命令集合
- x86和x64的区别
- Unity代码设置shader属性
- JS根据服务器时间倒计时
- HTML标签语义对照表
- UVA 11078 Open Credit System(扫描 维护最大值)
- cocos2dx lua调用C++类.
- Angular筛选功能
- 学习ASP.NET Core Razor 编程系列十三——文件上传功能(一)
- 从SQL注入到内网漫游
- consul配置和使用
- topcoder srm 692 div1 -23
- (转载)WinformGDI+入门级实例——扫雷游戏(附源码)
- FTP上传下载类
- python关于时间的计算,time模块
- java8 write file 写文件
- 一个php日志类
- mongoexport