网上查了很多资料都是下面的方法,但是不适用于Oracle

@Query(value = "select * from xxx where if(?1 !='',x1=?1,1=1) and if(?2 !='',x2=?2,1=1)" +

"and if(?3 !='',x3=?3,1=1)  ",nativeQuery = true)

List find(String X1,String X2,String X3);

————————————————

版权声明:本文为CSDN博主「小码蚁啊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_36802726/article/details/81208853

----------------------------------------------

以下是Oracle中的方法,在service层对条件做判定

String equityLever;

if (StringUtils.isEmpty(params.get("equityLevel"))){

equityLever = null;

}else {

equityLever = String.valueOf(params.get("equityLevel"));

}

return commodityRepository.findAllByLever(equityLever);

@Query(value = "SELECT t.equityType FROM Commodity t where t.isDelete = 0 " +

"and t.shelfStatus = 2 " +

"and t.equityLevel like concat(concat('%',nvl(?1,null)),'%') " +

"GROUP BY t.equityType")

List findAllByLever(@Param("equityLevel") String equityLevel);

或者 加上nativeQuery = true ,写原生sql

@Query(value = "SELECT t.equity_type FROM EQUITY_COMMODITY t where t.IS_DELETE = 0 " +

"and t.SHELF_STATUS = 2 " +

"and t.EQUITY_LEVEL like concat(concat('%',nvl(?1,null)),'%') " +

"GROUP BY t.EQUITY_TYPE",nativeQuery = true)

List findAllByLever(@Param("equityLevel") String equityLevel);

如果你要分页,可能要重写count语句,我这边遇到加上pageable对象时count语句有问题的时候,看下面的sql

@Query(value = "SELECT ID,CUST_ID,LEGAL_RIGHTS_INST_NBR,STATUS_CD,REQ_TYPE,ACCEPT_SEQ_NO,PROD_INST_ID,OPEN_STATUS,IS_OPEN,LAN_ID,IS_SETTLEMENT,MQ_INFO, CREATED_AT FROM EQUITY_REQUEST_LOG " +"WHERE 1=1 " +"AND CUST_ID = nvl(?1,null) " +"AND LEGAL_RIGHTS_INST_NBR = nvl(?2,null) " +"AND STATUS_CD = nvl(?3,null) " +"ORDER BY ?#{#pageable} ",countQuery = "SELECT count (ID) FROM EQUITY_REQUEST_LOG " +"WHERE 1=1 " +"AND CUST_ID = nvl(?1,'') " +"AND LEGAL_RIGHTS_INST_NBR = nvl(?2,null) " +"AND STATUS_CD = nvl(?3,null)",nativeQuery = true)Page findAllByParams(String custId,String legalRightsInstNbr,String statusCd, Pageable pageable);

这样写的限制是你的入参必须是是字符串类型的.我试过用number和date类型.但是为null的时候查询会报错数据类型异常.暂时没找到解决方案.希望大佬们可以一起探讨一下.

个人觉得 jpa 普通用用还是可以的.但是要到复杂sql 或者 自定义反馈对象的时候用起来,不如mybatis顺手.仅仅是个人感觉哈

springboot判断有没有库_Springboot 使用JPA @Query 注解 查询语句条件 有可能为空,Oracle数据库...相关推荐

  1. JPA @Modifying注解 jpql语句更新以及删除

    JPA @Modifying注解解释 这个注解在JPA中经常出现,是为了通知jpa,这是一个update或者delete操作,在更新或者删除操作时,此注解必须加,否则就会抛出异常,注:jpa不支持in ...

  2. 【SQL Server数据库】建库、建表、简单查询语句(一)

    记录数据库原理实验所用到的代码. 创建数据库 创建名称为XSGL_CP的数据库. create database XSGL_CP --设置主文件的逻辑名称.文件名.初始大小.最大文件大小限制.需要增加 ...

  3. SpringData JPA @Query动态SQL语句

    前言 这次有个需求,需要动态的sql语句去查询,但是@Query正常情况下SQL语句是写死的,在查找了很多资料后,想到了一个好的解决办法 思路 利用MYSQL的判断来拼接SQL语句 实现 先上代码 @ ...

  4. Spring Data JPA自定义SELECT查询语句,自定义UPDATE修改语句

    查询语句: 1. 在@Query 注解里设置value ,?1.?2 分别代表第一第二个参数, nativeQuery=true  表示是否是原生SQL @Query(value = "se ...

  5. SpringBoot使用SpringDataJPA通过@Query注解多对多分页查询

    文章目录 SpringBoot使用JPA@Query注解查询 1. 环境配置 2. 数据库表配置 3. 实体类配置 4. Dao代码 5. Service 代码 6. Controller 代码 7. ...

  6. springboot jpa自定义SQL查询

    说明 在使用JPA实现数据持久化过程中经常会遇到这种情况:我有2张表是一对多的关系,需要通过一个外键ID去关联查询到另外一张表的字段.例如,1张商品表food_info其中存有商品分类ID categ ...

  7. 【SpringBoot框架篇】11.Spring Data Jpa实战

    文章目录 1.简介 1.1.JPA 1.2.Spring Data Jpa 1.3.Hibernate 1.4.Jpa.Spring Data Jpa.Hibernate三者之间的关系 2.引入依赖 ...

  8. 判断vc2005运行库是否以已安装

    网上找不到相关的代码,只有自己写了. //=============================================================== //功能: // 判断vc20 ...

  9. jpa jql 时间范围查询_SpringBoot整合JPA案例

    本节主要学习SpringBoot + JPA(底层使用Hibernate实现)集成案例. 1.JPA概述 1.1 JPA简介 JPA是Java Persistence API的简称,中文名Java持久 ...

最新文章

  1. P1155 双栈排序(二分图的染色判断+链式前向星)
  2. 基类与派生类之间的转换关系
  3. linux删除多余日志,linux 删除日志
  4. html军事学校模板,军事训练学校网站模板
  5. ubuntu mysql 内存满了_Ubuntu 下 mysql 卸载后重安装时遇到的问题
  6. 【Tools】OBS Studio录制视频教程
  7. Android Studio生成APP方法及其所在位置
  8. web前端设计与开发期末作品:旅游网站设计——响应式的出国旅游定制(17页) HTML+CSS+JavaScript 旅游网页html 旅游景点html...
  9. 2021-09-29破解小米“铁蛋”,只需9999元,你也可以做一个四足机器人!
  10. Cleartext vs. Plaintext vs. Ciphertext vs. Plaintext vs. Clear Text
  11. 微信小程序中判断用户是否已关注公众号的两种实现
  12. 怎么用计算机要微信,电脑端要实现“微信双开”功能,三种方法,简单实用!...
  13. STP生成树协议切割网络环路
  14. JAVA合并pdf,拆分pdf文档
  15. 计算机显示器不亮灯,电脑液晶显示器指示灯不亮是为什么?
  16. 南阳师范学院计算机科学与技术在哪个校区,2021年南阳师范学院有几个校区,大一新生在哪个校区...
  17. linux(shell)查看文件时间戳
  18. harmonyos和emui 11概念股,从 EMUI11 到 HarmonyOS,华为 UX 设计的思考与传承
  19. 对Windows10虚拟桌面的简单研究
  20. 跟熊浩学沟通30讲读后感_20191026听书笔记《跟熊浩学沟通》

热门文章

  1. python解放二次开发_[转载]Python二次开发程序详解
  2. linux进程cpu时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...
  3. python函数参数传递机制_Python 学习笔记(一) 理解Python的函数传参机制
  4. 计算机个性化定制服务课题,服务网络的构建与面向增量式需求的动态定制方法-计算机科学与技术专业论文.docx...
  5. logstash-input-redis源码解析
  6. 2-docker 安装
  7. U-Net++粗略解释
  8. 传百度无人车计划分拆,百度回复:不实信息,目前未有分拆计划
  9. Iptables详解+实例
  10. Python自动化运维之常用模块—logging