JpaSpecificationExecutor接口,该接口提供了如下一些方法:
public interface JpaSpecificationExecutor<T> {
T findOne(Specification<T> spec);//根据sql获取单个对象数据
List<T> findAll(Specification<T> spec);//根据sql查询所有数据
Page<T> findAll(Specification<T> spec, Pageable pageable);//根据sql分页查询数据
List<T> findAll(Specification<T> spec, Sort sort); //根据sql查询数据,并根据参数进行排序
long count(Specification<T> spec); //根据sql查询数据总数
}
Predicate可以看成一个完整的查询条件,即sql查询语句中中where后面的部分
root.get(“typeid”)表示获取数据库表中typeid这个字段
.in(typeid)类似sql语法中的 IN(typeid)
root.get(“typeid”).in(typeid))返回一个Predicate对象,相当于查询条件 ‘typeid in (typeid)’
使用CriteriaBuilder对象(cb)的and方法 cb.and(XXX) 相当于在where查询条件后面用 ‘and XXX ’的形式拼接
predicate.getExpressions().add: 增加predicate的查询语句