1: 编写DAO类或接口

 dao类/接口 需继承
     public interface JpaSpecificationExecutor<T>  

接口;

如果需要分页,还可继承

 public interface PagingAndSortingRepository<T, ID extends Serializable> extends CrudRepository<T, ID> 

接口。

2.

     public interface JpaSpecificationExecutor<T>  

接口具有

  copy

     Page<T> findAll(Specification<T> spec, Pageable pageable);  //分页按条件查询  

     List<T> findAll(Specification<T> spec);    //不分页按条件查询  
方法。 我们可以在Service层调用这两个方法。
   两个方法都具有 Specification<T> spec 参数,用于设定查询条件。
Service 分页+多条件查询 调用示例:
 studentInfoDao.findAll(new Specification<StudentInfo> () {  

    public Predicate toPredicate(Root<StudentInfo> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {
Path<String> namePath = root.get("name");
Path<String> nicknamePath = root.get("nickname");
/**
* 连接查询条件, 不定参数,可以连接0..N个查询条件
*/
query.where(cb.like(namePath, "%李%"), cb.like(nicknamePath, "%王%")); //这里可以设置任意条查询条件 return null;
} }, page); }
这里通过CriteriaBuilder 的like方法创建了两个查询条件, 姓名(name)字段必须包含“李”, 昵称(nickname)字段必须包含“王”。

然后通过

 CriteriaQuery<T> where(Predicate... restrictions);  

连接多个查询条件即可。

这种方式使用JPA的API设置了查询条件,所以不需要再返回查询条件Predicate给Spring Data Jpa,故最后return null;即可。

转自:http://blog.csdn.net/ie8848520/article/details/8161986

最新文章

  1. Hadoop程序运行中的Error(1)-Error: org.apache.hadoop.hdfs.BlockMissingException
  2. java的访问权限
  3. Angular.JS
  4. bam/sam格式说明
  5. ACM 中常用的算法有哪些?
  6. Android getTopActivity的方法
  7. Bessie Goes Moo
  8. JAVASCRIPT 调用 OCX 的那些坑
  9. 前端MVC Vue2学习总结(四)——条件渲染、列表渲染、事件处理器
  10. 几款有用的AndroidStudio插件
  11. struts升级2.3.12到2.5.13
  12. admin 后台操作表格
  13. vue 增删改查
  14. Mybatis源码解析-MapperRegistry代理注册mapper接口
  15. 【html5】如何让Canvas标签自适应设备
  16. SNP(单核苷酸多态性)准确性的验证,你造吗?
  17. [转]LCT讲解
  18. nodepad++ 正则 替换
  19. 《完全版线段树》——notonlysuccess
  20. (三)HTML中的列表标签、框架集及表单标签

热门文章

  1. click和blur事件冲突解决方案
  2. hdu4638
  3. 第二天0605下午——超链接&lt;a&gt;与图片&lt;img&gt;
  4. sql 中三大范式详解
  5. JAVA设计模式初探之装饰者模式
  6. MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
  7. Java下一个简单的数据库分库帮助类
  8. JavaScript函数认识,Js中的常见函数
  9. JDK和Tomcat的简单配置(菜鸟巧记一)
  10. js中年份、月份下拉框