JPA 查询条件动态拼装 一个字段对应多个状态查寻 SQL
@Override
@Transactional(readOnly = true)
public Results<Invoice> list(final Integer cid, final Integer uid, final String snno, final String inno, final List<Integer> status, final Integer flag, final Integer isshow,final String dtStart, final String dtEnd, final Integer cur, final Integer page) {
Pageable pageable = PageRequest.of(cur, page, Sort.Direction.DESC, "id");
Page<Invoice> lst = invoiceRepository.findAll(new Specification<Invoice>() {
@Override
public Predicate toPredicate(Root<Invoice> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
if (VerificationUtil.notZero(cid)) {
list.add(cb.equal(root.get("cid").as(Integer.class), cid));
}
if (VerificationUtil.notZero(uid)) {
list.add(cb.equal(root.get("uid").as(Integer.class), uid));
}
if (StringUtils.notEmpty(snno)) {
list.add(cb.like(root.get("snno").as(String.class), "%" + snno + "%"));
}
if (StringUtils.notEmpty(inno)) {
list.add(cb.like(root.get("inno").as(String.class), "%" + inno + "%"));
}
if (flag != null) {
list.add(cb.equal(root.get("flag").as(Integer.class), flag));
}
if (isshow != null) {
list.add(cb.equal(root.get("isshow").as(Integer.class), isshow));
}
if (StringUtils.notEmpty(dtStart)) {
java.util.Date curDate = TimeUtil.getDate(dtStart, null);//new java.util.Date();
Date date = new Date(curDate.getTime());//进行日期的转换
list.add(cb.greaterThanOrEqualTo(root.<Date>get("ft"), date));
}
if (StringUtils.notEmpty(dtEnd)) {