条件查询
该方法的条件查询的重点就在于 ‘Specification’ 的封装
- new Specification<查询表对应的实体类>
public List<user> showData(Integer id) {
return userDao.findAll(new Specification<user>() {
/**
* @param root 根对象,通过该属性确定要查询的字段
* @param criteriaQuery 查询的关键字,如group by,order by
* @param criteriaBuilder 来封装条件
*/
@Override
public Predicate toPredicate(Root<user> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Predicate predicate = null;
if (id == null) {
return null;
} else {
predicate = criteriaBuilder.equal(root.get("id").as(Integer.class), id);
}
return predicate;
}
});
}
分页查询
- " PageRequest.of(page-1,size); " ,这里一定要是 page-1
/**
* @param page 查询的页数
* @param size 查询每页的大小
*/
public Object showData(Integer id,int page,int size) {
Pageable pageable= PageRequest.of(page-1,size);
return userDao.findAll(new Specification<user>() {
/**
* @param root 根对象,通过该属性确定要查询的字段
* @param criteriaQuery 查询的关键字,如group by,order by
* @param criteriaBuilder 来封装条件
*/
@Override
public Predicate toPredicate(Root<user> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Predicate predicate = null;
if (id == null) {
return null;
} else {
predicate = criteriaBuilder.equal(root.get("id").as(Integer.class), id);
}
return predicate;
}
},pageable);
}