美文网首页
JPA动态查询--Spring Data Specificati

JPA动态查询--Spring Data Specificati

作者: 猴猴猪027 | 来源:发表于2016-12-20 15:49 被阅读0次

</br>
例子使用Teacher类

Teacher{
String name;
String address;
String email;
}

1.使用MetaModel generator生成相应类的metaModelclass,工具有很多,可以使用maven,eclipse插件也行。得到Teacher_
2.新建一个继承Specification接口的类,重写toPredicate方法例如要根据Teacher name,address,email查询相应的教师信息。

public class TeacherSpec implements Specification {
private final Teacher teacher;
publicTeacherSpec(TeacherSpec teacher){
this.teacher= teacher;
}

@Override
public Predicate toPredicate(Root root, CriteriaQuery query,CriteriaBuilder cb) {
List=new ArrayList();
if(StringUtils.isNotBlank(teacher.getName())){
predicates.add(cb.equal(root.get(Teacher_.name),teacher.getName()));
}
if(StringUtils.isNotBlank(teacher.getAddress)){
predicates.add(cb.like(root.get(Teacher_.address),teacher.getAddress()+"%"));
}
if(StringUtil.isNotBlank(teacher.getEmail())){
predicates.add(cb.like(root.get(Teacher_.email),teacher.getEmail()+"%"));
}
returnandTogether(predicates,cb);
}

private PredicateandTogether(List predicates, CriteriaBuilder cb) {
return cb.and(predicates.toArray(newPredicate[0]));
}
}

3.Dao接口继承JpaRepository,JpaSpecificationExecutor

TeacherDao entends JpaRepository<Teacher,Integer>, JpaSpecificationExecutor<Teacher>**

4.Service方法中获得一个查询标准类TeacherSpec的对象,teacherSpc然后调用dao方法就好了

Page<teaPage>=teacherDao.findAll(teacherSpc,newPageRequest(pageNo,pageSize))**

相关文章

网友评论

      本文标题:JPA动态查询--Spring Data Specificati

      本文链接:https://www.haomeiwen.com/subject/rvxfvttx.html