Spring Date jpa 多个like匹配查询基础问题?
本人想要实现的效果如下面sql 语句所示:
select * from user u where u.userid like '% 参数1 %' and u.username like '%参数2%'
通过百度已经实现 动态查询代码如下:
public Page<User> getDataForSearch(PageRequest pageRequest, final JSONObject jSONObjSearch) throws SaggException {
Page<User> page = null;
try {
page = userRepo.findAll(new Specification<User>() {
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
List<Predicate> predicates = new ArrayList<Predicate>();
Predicate predicate = null;
Expression<String> namePath = null;
if (null != jSONObjSearch) {
if (StrKit.notBlank(jSONObjSearch.getString("userid"))) {
namePath = root.get("userid");
predicate = builder.like(namePath, "%" + jSONObjSearch.getString("userid") + "%");
predicates.add(predicate);
}
if (StrKit.notBlank(jSONObjSearch.getString("userName"))) {
namePath = root.get("userName");
predicate = builder.like(namePath, "%" + jSONObjSearch.getString("userName") + "%");
predicates.add(predicate);
}
}
query.where(predicates.toArray(new Predicate[predicates.size()]));
return null;
}
}, pageRequest);
} catch (Exception e) {
// 交易人管理模块异常状态码statusCode用2000开始,2001:数据查询错误
throw new SaggException(StatusCodeUtil.personSearchErr);
}
return page;
}
DAO 层代码如下:
public interface UserRepository extends CrudRepository<User, Integer> {
// List<User> findAll(Pageable pageable);
Page<User> findAll(Pageable pageable);// 分页需返回page对象
Page<User> findAll(Specification<User> spe, Pageable pageRequest);
Page<User> findByUseridOrUserNameLike(Pageable pageable, String userid, String userName);
问题: 上面这种写法,好像不能达到我期望的效果,上面这个代码哪里错了?怎么改进?请大神赐教,感激不尽……
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
findByUseridLikeOrUserNameLike