JPA查询之Specification以及HQL、SQL查询
来源:互联网 发布:手机版logo设计软件 编辑:程序博客网 时间:2024/05/18 12:32
1、Specification
//查询条件ListList<Predicate> predicateList = new ArrayList<Predicate>();Specification specification = new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { //root即是Join<>内部第一个泛型的类型,意思就是用SkuProduct与Picture通过SkuProduct的pictures左联 Join<SkuProduct,Picture> skuProductPictureJoin = root.join("pictures",JoinType.INNER); //添加第1个查询条件:SkuProduct的code等于skuProduct.getCode(),然后将这个criteriaBuilder的条件添加到predicateList predicateList.add(criteriaBuilder.equal(root.get("code"),skuProduct.getCode())); //添加第2个条件 predicateList.add(criteriaBuilder.notEqual(skuProductPictureJoin.get("pictureType"),0)); //返回 return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()])); }};//重要说明:Specification不支持右连接!//Specification specification = new Specification() {// @Override// public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {// Join<Picture,SkuProduct> skuProductPictureJoin = root.join("pictures",JoinType.RIGHT);// predicateList.add(criteriaBuilder.notEqual(root.get("pictureType"),0));// predicateList.add(criteriaBuilder.equal(skuProductPictureJoin.get("code"),skuProduct.getCode()));// return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()]));// }//};List<SkuProduct> results = skuProductRepository.findAll(specification);if(results!=null){ results.stream().forEach(result->{ System.out.println(result); });}
2、HQL
@Query(value = "SELECT p FROM Picture p WHERE p.code= :code") List<Picture> findByPicture(@Param(value = "code") String code);
3、SQL
3.1--:占位符
@Query(value = "SELECT p.* FROM picture p LEFT JOIN sku_product_pictures sp_p ON p.id=sp_p.pictures_id LEFT JOIN sku_product sp ON sp_p.sku_product_id=sp.id WHERE sp.code= :code AND p.picture_type=0",nativeQuery = true) List<Picture> findBySkuProductCodeAndPicture(@Param(value = "code") String code);
3.2--?占位符
@Query(value = "SELECT p.* FROM picture p LEFT JOIN sku_product_pictures sp_p ON p.id=sp_p.pictures_id LEFT JOIN sku_product sp ON sp_p.sku_product_id=sp.id WHERE sp.code=?1 AND p.picture_type=?2",nativeQuery = true) List<Picture> findSkuProductCodeAndPicture(String code,int pictureType);
版权声明:本文为博主原创文章,未经博主允许不得转载。
阅读全文
0 0
- JPA查询之Specification以及HQL、SQL查询
- jpa specification条件查询
- 3 Spring JPA Specification 查询
- Spring Data JPA Specification查询
- JPA Specification常用查询+排序
- Hibernate-主键查询、HQL查询,Criteria以及本地SQL查询
- jpa多表查询 HQL
- spring-data-jpa Specification 拼接复杂查询
- sql hql 查询
- Atitit oodbms的查询,面向对象的sql查询jpa jpql hql
- Hibernate查询之HQL查询
- JPA SQL查询
- JPA原生sql查询
- Hibernate之HQL查询
- Hibernate之HQL查询
- Hibernate之HQL查询
- Hibernate-HQL、Criteria、SQL实现查询对照以及增删改
- Hibernate-HQL、Criteria、SQL实现查询对照以及增删改
- 2017佛山五金机电及机械零配件展览会暨佛山焊接与切割设备展览会会刊(参展商名录)
- 几种可执行的刷关键词方法
- 第十一周 项目3
- WebRTC-Android 源码导读(四):VideoCRE 与内存抖动优化
- mui上传图片
- JPA查询之Specification以及HQL、SQL查询
- 机器学习的一些参考文章
- 经常容易忘记篇
- VMD由于周期性边界造成的显示问题
- Ubuntu16.04进入initramfs,再重启后黑屏问题
- Fiori2.0学习笔记-neo-app文件的配置
- JetBrains 里不为人知的秘密--特别篇(2)
- 使用jquery操作session
- php获取请求参数的方法