/*
案例:完成根据客户名称的模糊匹配,返回客户列表
客户名称以“戴”开头
equal方法:直接得到path对象(属性),然后进行比较即可
gt,lt,ge,le,like:得到path对象,根据path指定比较的参数类型,再去进行比较
指定参数类型:path.as(类型的字节码对象)
*/
@Test
public void testSpec3(){
//构造查询条件
Specification<Customer> spec = new Specification<Customer>() {
@Override
public Predicate toPredicate(Root<Customer> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
//查询属性:客户名
Path<Object> custName = root.get("custName");
//查询方式:模糊匹配
Predicate predicate = criteriaBuilder.like(custName.as(String.class), "戴%");
return predicate;
}
};
//添加排序
//创建排序对象:需要调用构造方法实例化sort对象
//第一个排序参数:排序的顺序(倒序、正序)
//Sort.Direction.Desc :倒叙
//Sort.Direction.Asc :升序
//第二个参数:排序的属性名称
Sort sort = Sort.by(Sort.Direction.DESC, "custId");
List<Customer> list = customerDao.findAll(spec, sort);
for (Customer customer : list) {
System.out.println(customer);
}
}