首页 > 数据库 >spring data jpa 使用原生sql查询数据库 原生sql中有in关键字 该如何传参?直接传List集合就能找到数据,解析List集合交给spring data jpa 框架去做

spring data jpa 使用原生sql查询数据库 原生sql中有in关键字 该如何传参?直接传List集合就能找到数据,解析List集合交给spring data jpa 框架去做

时间:2023-10-23 15:25:09浏览次数:44  
标签:jpa spring sql List beew data

spring data jpa 使用原生sql查询数据库 原生sql中有in关键字 该如何传参?直接传List集合就能找到数据,解析List集合交给spring data jpa 框架去做

遇到问题?

第一次写的时候in 关键字后面传的是将List 集合转化为一个这样的字符串,

"'123','23','23'"

 @Query(nativeQuery = true, value = "SELECT COUNT(beew.id) AS total FROM `bhpp2.0_evenmngtservice`.`evenmngt_workitem` beew "  
            +"WHERE beew.thingnum IN(:thingnumListStr) "
            +"ORDER BY beew.id DESC"
            )
    public Object findWorkIteamByThingNumListTotal(@Param("thingnumListStr") String thingnumListStr);

然后发现不管什么情况下都查不到数据,鼓捣了半天,找到原因我们传的 字符串参数中单引号被spring data jpa 框架给转义了,将单引号转换为普通的字符串。

解决方法其实是想多了,直接传List集合就能找到数据,解析List集合交给spring data jpa 框架去做。

 @Query(nativeQuery = true, value = "SELECT COUNT(beew.id) AS total FROM `bhpp2.0_evenmngtservice`.`evenmngt_workitem` beew "  
            +"WHERE beew.thingnum IN(:thingnumList) "
            +"ORDER BY beew.id DESC"
            )
    public Object findWorkIteamByThingNumListTotal(@Param("thingnumList") List<String> thingnumList);

 

原文链接:https://blog.csdn.net/huxiaochao_6053/article/details/84749658

标签:jpa,spring,sql,List,beew,data
From: https://www.cnblogs.com/sunny3158/p/17782528.html

相关文章

  • Spring Data JPA : 查-条件化查询Specification
    条件化查询 用查询条件创建Specification对象参考SpringDataJPASpecification查询使用Criteria查询Criteria查询是面向对象查询,root就是一个对象,root.get("name")就是name属性。可以级联获取属性每一个查询条件创建一个Specification对象,如果有多个查询条件,就把多个Spec......
  • MySQL CTE递归查询 Data too long for colum‘xxx‘ at row 1
    在mysql8使用 CTE递归查询时,出现了这个报错WITHrecursiveareaAS(SELECTarea_name,area_codeFROMsys_area_treeWHEREarea_category='1'ANDparent_codeISNULLUNIONALLSELECTconcat(t1.area_name,'/',t.area_name),t.area_code......
  • 使用JpaRepository的save方法执行成功,数据库却没有保存
    使用JpaRepository的save方法执行成功,数据库却没有保存可能是和事务有关的,这里用JpaRepository的flush方法,就可以了@TestvoidtestUserRespositorySave(){Useruser=newUser("小明","123456",18);userRespository.save(user);userRespository.flush();}原......
  • JPA查询修改数据,但是未保存到数据库,数据库却修改了,因为对查询出的Entity实体对象,修改s
    JPA查询修改数据,但是未保存到数据库,数据库却修改了,因为对查询出的Entity实体对象,修改set了属性。导致事务提交时候修改了数据库的数据使用JPA查询数据,对查询出来的结果进行修改,但是不保存数据库,最终数据库却做了同样的修改。JPA对象的四种状态瞬时状态:瞬时状态的实体就是一......
  • mysql,sqlserver,oracle各自的存在更新不存在添加写法
    mysql,sqlserver,oracle各自的存在更新不存在添加写法在向表中插入数据的时候,经常遇到这样的情况:首先判断数据是否存在;如果不存在,则插入:如果存在,则更新。SQLserver脚本先查询,没有数据再进行数据插入,有数据就走更新ifnotexists(select1fromtwhereid=1)ins......
  • MYSQL判断索引是否存在,不存在则创建索引(亲测可用)
    MYSQL判断索引是否存在,不存在则创建索引(亲测可用)springboot集成flyway管理数据库版本使用存储过程平滑更新系统数据库这是一个不存在就添加索引的例子,若需求是存在则删除微调下面的ifnotexists即可DROPPROCEDUREIFEXISTSadd_index;DELIMITER$CREATEPROCEDUREadd_......
  • 安装MySQL以及Workbench
    MySQL压缩包下载链接安装将安装包解压到本地文件夹,假设为D:/ProgramFiles/MySQL。新增系统环境变量:#直接新建。MYSQL_HOME:D:\ProgramFiles\MySQL#在原Path上新增。Path:%MYSQL_HOME%\bin在D:/ProgramFiles/MySQL下新建文件mysql.ini,并添加如下内容(参考官方文......
  • mysql数据库类型有哪些
    mysql数据库类型有哪些mysql数据库类型有:1、整数类型;2、浮点数类型;3、定点数类型;4、位类型BIT;5、日期与时间类型;6、文本字符串类型;7、ENUM类型;8、SET类型;9、二进制字符串类型;10、JSON类型;11、空间类型。其中,整数类型一共有5种。1、整数类型整数类型一共有5种,包括TINYI......
  • MySQL的几种日志
      重做日志(redolog)redolog(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。比如MySQL实例挂了或宕机了,重启时,InnoDB存储引擎会使用redolog恢复数据,保证数据的持久性与完整性。InnoDB会把“在某个数据页上做了什么修改”记录到重做日志缓存(redologbuffer)里,接着刷......
  • SQL AUTO INCREMENT 字段
    参考链接:1.https://www.runoob.com/sql/sql-autoincrement.html2.3.4.https://dba.stackexchange.com/questions/61603/how-to-query-and-increase-a-value-counter-in-a-thread-safe-way-avoid-race-co橘子Jane......