博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot jpa hibernate 实现动态查询
阅读量:6377 次
发布时间:2019-06-23

本文共 3947 字,大约阅读时间需要 13 分钟。

hot3.png

 

/**=========================================== *        Copyright (C) 2016 PinganYun *           All rights reserved * *  项 目 名: pacloud-test *  文 件 名: CloudCoverDao.java *  版本信息: V1.0.0  *  作    者: ZHANGYIMING417 *  日    期: 2016年5月17日-上午11:29:46 *  ============================================*/package cn.com.paic.pacloud.cloudtest.repository;import org.springframework.data.jpa.repository.JpaSpecificationExecutor;import org.springframework.data.repository.PagingAndSortingRepository;import cn.com.paic.pacloud.cloudtest.domain.CloudCover;/** * 类 名 称: CloudCoverDao * 类 描 述:  * 创 建 人: ZHANGYIMING417 * 创建时间: 2016年5月17日 上午11:29:46 * * 修 改 人: ZHANGYIMING417 * 操作时间: 2016年5月17日 上午11:29:46 * 操作原因:  *  */public interface CloudCoverDao extends PagingAndSortingRepository
,JpaSpecificationExecutor
{ }
/**=========================================== *        Copyright (C) 2016 PinganYun *           All rights reserved * *  项 目 名: pacloud-test *  文 件 名: CloudCoverService.java *  版本信息: V1.0.0  *  作    者: ZHANGYIMING417 *  日    期: 2016年5月17日-下午1:55:40 *  ============================================*/package cn.com.paic.pacloud.cloudtest.service;import java.util.List;import javax.persistence.criteria.CriteriaBuilder;import javax.persistence.criteria.CriteriaQuery;import javax.persistence.criteria.Predicate;import javax.persistence.criteria.Root;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.jpa.domain.Specification;import org.springframework.data.jpa.domain.Specifications;import org.springframework.stereotype.Service;import org.springframework.util.CollectionUtils;import cn.com.paic.pacloud.cloudtest.domain.CloudCover;import cn.com.paic.pacloud.cloudtest.repository.CloudCoverDao;/** * 类 名 称: CloudCoverService * 类 描 述:  * 创 建 人: ZHANGYIMING417 * 创建时间: 2016年5月17日 下午1:55:40 * * 修 改 人: ZHANGYIMING417 * 操作时间: 2016年5月17日 下午1:55:40 * 操作原因:  *  */@Servicepublic class CloudCoverService {    @Autowired    private CloudCoverDao cloudCoverDao;    public CloudCover saveCover(CloudCover cloudCover) {        List
cloudCovers = cloudCoverDao.findAll(Specifications.where(getWhereClause(cloudCover))); if (!CollectionUtils.isEmpty(cloudCovers) && cloudCovers.size() > 0) { return cloudCovers.get(0); } return cloudCoverDao.save(cloudCover); } /** * 方法描述: 组合多条件查询 * 作 者: ZHANGYIMING417 * 日 期: 2016年5月17日-下午1:59:54 * @param cloudCover * @return * 返回类型: Object */ private Specification
getWhereClause(final CloudCover cloudCover) { return new Specification
() { @Override public Predicate toPredicate(Root
r, CriteriaQuery
q, CriteriaBuilder cb) { Predicate predicate = cb.conjunction(); if (cloudCover != null) { if (StringUtils.isNotBlank(cloudCover.getNetworkId())) { predicate.getExpressions().add(cb.equal(r.
get("networkId"), StringUtils.trim(cloudCover.getNetworkId()))); } if (StringUtils.isNotBlank(cloudCover.getServiceOfferingsId())) { predicate.getExpressions().add(cb.equal(r.
get("serviceOfferingsId"), StringUtils.trim(cloudCover.getServiceOfferingsId()))); } if (StringUtils.isNotBlank(cloudCover.getTemplateOfferingsId())) { predicate.getExpressions().add(cb.equal(r.
get("templateOfferingsId"), StringUtils.trim(cloudCover.getTemplateOfferingsId()))); } if (StringUtils.isNotBlank(cloudCover.getZoneId())) { predicate.getExpressions().add(cb.equal(r.
get("zoneId"), StringUtils.trim(cloudCover.getZoneId()))); } } return predicate; } }; }}

 

动态查询:1.实现JpaSpecificationExecutor接口;

                    2.new Specification 子类即可。

转载于:https://my.oschina.net/u/217398/blog/676712

你可能感兴趣的文章
leetcode -- Two Sum
查看>>
Windows多线程
查看>>
C语言局部变量和全局变量问题汇总
查看>>
android 下的网络图片加载
查看>>
Paip.语义分析----情绪情感词汇表总结
查看>>
Linux下软件安装,卸载,管理
查看>>
View Programming Guide for iOS_读书笔记[正在更新……]
查看>>
排查VMWare虚拟机的性能问题
查看>>
yum安装Apache Web Server后各个文件存放位置
查看>>
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
查看>>
Android于JNI调用列出的程序
查看>>
CSS3-border-radius 属性
查看>>
解决Activity启动黑屏和设置android:windowIsTranslucent不兼容activity切换动画的问题
查看>>
C#开发SQLServer的Geometry和Geography存储
查看>>
EBS R12.2应用层关闭脚本的执行过程
查看>>
js:深闭包(范围:上)
查看>>
使用POI导入小数变成浮点数异常
查看>>
Logistic Regression的几个变种
查看>>
司机福利!Uber即将可以自己选目的地接单啦!
查看>>
MOGODB REDIS
查看>>