1、CriteriaQuery 安全查询主语句
2、Root 定义查询的From子句中能出现的类型、
3、Predicate 过滤条件
4、Predicate[] 多个过滤条件
代码
List<Predicate> predicatesList = new ArrayList<Predicate>();
if( bhjlquery != null && bhjlquery.getWxzt() != null ) {
predicatesList.add(criteriaBuilder.equal(_bhwxzt, bhjlquery.getWxzt()));
}
if( bhjlquery != null && bhjlquery.getPgzt() != null ) {
predicatesList.add(criteriaBuilder.equal(_pgzt, bhjlquery.getPgzt()));
}
// 数据权限 通过管养路段去实现
Expression<String> exp = root.<String>get("ldcode");
List<String> lds = getBmLdService.getLds();
if( lds == null || lds.size() == 0 ) return null;
predicatesList.add(exp.in(lds));
if( predicatesList.size() > 0 ) {
Predicate[] p = new Predicate[predicatesList.size()];
return criteriaBuilder.and(predicatesList.toArray(p));
} else {
return null;
}
in 语句查询
Expression<String> exp = root.<String>get("ldcode");
List<String> lds = getBmLdService.getLds();
if( lds == null || lds.size() == 0 ) return null;
predicatesList.add(exp.in(lds));