mybatis和oracle的问题. 20C

select
a.name,
a.salary,
${text} text
from table a

类似这种的sql,mybatis传递过来的text参数如果是单纯的一个字符串可以正常执行,
但是现在的问题是text里的参数为:('aaa','bbb','ccc')这样的格式。所以执行就非法了。
请问该怎么写呢。因为我级联查询,需要像其他mapper查询传递参数
图片说明
图片说明

0

8个回答

这种传参的话,一般我们会使用 list/map/数组 来进行传参然后在 mapper 中使用foreach 循环来去 map 中的值来拼接,举个例子:

  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
            #{item}  
 </foreach>  
1

'aaa','bbb','ccc'换成'aaa,bbb,ccc'

0

$ 换成 # 试一下

0

aaa','bbb','ccc'以集合的形式传,在xml用循环获取

0

举个例子:
<!-- 动态foreach -->

SELECT * FROM USER

<!-- 自定义类List集合 变量 开始 结束 分割 -->

#{id}

<!-- and id in (1,10,16) -->


这样应该可以

0

这块我之前遇到过这样试试 加上单引号
![图片说明](https://img-ask.csdn.net/upload/201806/14/1528908745_799480.png)图片说明

0

图片说明

0

如果需要在查询结果中输出"'a','b','c'"(不包含双引号),需要进行如下转义:

SELECT '\'a\',\'b\',\'c\'' text FROM DUAL;

题主在MyBatis映射文件中用了美元符号($),而美元符号取值时仅仅是替换原参数,不会做任何修改优化:
···
SELECT (${text}) text FROM DUAL;
···
传入"'a','b','c'"后变为:
···
SELECT ('a','b','c') text FROM DUAL;
···
这个SQL语句在加了括号的情况下会报错,括号去掉后又得不到想要的结果。

解决:
尝试把美元符号($)替换为井号(#),如果不行,那只能对参数中的单引号进行转义了。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Mybatis like 模糊查询问题
转载自:http://elang0705.iteye.com/blog/1700796 大家好,我只是IT行业的一只菜鸟,最近做的项目要求用Mybatis技术,在做一个模糊查询的时候,遇到点麻烦,经过1天的研究,反复尝试,终于找到问题所在,借此机会与大家分享一下,谢谢!   Mybatis配置如下:      parameterType="com.deppon.oa.mo
MyBatis+oracle 批量插入数据的一些问题
<select id="InsertUserPrivilegeTemp" parameterType="Integer" resultMap="userPrivilegeTemp"> insert into userPrivilegeTemp select ui.UserID, rp.PrivilegeID from UserInfo u
mybatis批量插入oracle时id插入办法
oracle中id一般是序列生成,但是在mybatis的原生批量插入的语句的时候,id不太好插入 后寻找一个折中的办法,转化一下,插入id时,插入oracle的序列值 BEGIN INSERT INTO JOB_QUEUE( ID, JOB_ID, START_TIME, END_TIME, MODIFIED_
Mybatis实现oracle批量插入,主键问题
由于Oracle中没有主键自增,所以在应用MyBatis实现Oracle批量插入操作的时候,我们可以使用序列的形式 创建对应的序列: create sequence gra_seq MyBatis批量插入SQL语句: insert into groleauthen(ra_id,role_id,authen_id) select gra_seq.nextval,gra.
MyBatis+Oracle时间精度丢失的问题
一、如果是插入或者更新,需要做如下操作:      1、将Mapper.xml文件中 resultMap下相应节点的 jdbcType="DATE" 去掉      2、将Mapper.xml文件中你调用的相应方法中的相应节点为的 jdbcType="DATE"  也去掉 以上两步操作即可,其他不需要 二、如果是做为查询条件,需要做如下操作:      1、将Mapper.xml
Mybatis Plus 2 升到 Mybatis Plus 3 时,oracle 自增序列的相关问题
一、Mybatis Plus 2,oracle 自增序列配置 1. config.yml 配置文件 #mybaits-plus配置,修改主键类型,mapper.xml、type 别名等 mybatis-plus: mapper-locations: classpath:/mapper/*Mapper.xml global-config: #主键类型 0:&amp;quot;数据库ID自增&amp;quot;, 1:...
mybatis 对 oracle 的批量操作,
1:返回插入新数据的主键(主键序列自增) SELECT SQ_SYS.Nextval AS ID from DUAL insert into sys_language_type ( ID, UPDATE_TIME ) values ( #{ID}, #{UPDATE_TIME} ) 获取方式:map.
【Oracle】mybatis Oracle 分页并查询出现的问题
bug: 使用参数绑定的方式进行查询,查询语句如下: @Select("SELECT * FROM   (   SELECT A.*, ROWNUM rn   FROM ( SELECT  *  FROM xxxxxtable   order by #{parameter} desc )  A   " + "WHERE ROWNUM = #{start} ") 但是测试
Spring boot 中 Mybatis Plus 在 Oracle 新增数据时,主键自增问题
解决办法: 1.spring boot 依赖版本改为 mybatis-plus-boot-starter 2.在配置文件中增加 #主键类型 0:&amp;amp;quot;数据库ID自增&amp;amp;quot;, 1:&amp;amp;quot;用户输入ID&amp;amp;quot;,2:&amp;amp;quot;全局唯一ID (数字类型唯一ID)&amp;amp;quot;, 3:&amp;amp;quot;全局唯一ID UUID&amp;amp;quot;; id-type: 1 #
mybatis使用oracle语句遇到的错误+可能的解决方法
因为刚使用oracle时,遇到了许多语句错误,在这里记录下来,防止再犯!&quot;nested exception is org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement 'com.crm.dao.FilmListMappe...
关于mybatis批量插入oracle Null值报错的问题
关于mybatis批量插入oracle Null值报错的问题 &amp;lt;insert id=&quot;battchAddFlowField&quot;&amp;gt; insert into T_WORKFLOW_FIELD(ID, WF_ID, NODE_ID, FG_ID, NAME, TYPE, SORT, CREATOR, CREATE_TIME, ENABLED, REQUIRED, CSS, JS, DATA...
Java 多线程通过 Mybatis 获取 Oracle 序列值重复问题处理
Java 多线程通过 Mybatis 获取 Oracle 序列值重复问题处理 在同一个事务内开多线程访问序列值时,会取出同一个值。 select mySequence.nextval from dual 解决方法是将查询语句放在一个新事务中,同时增加同步约束。 @Transactional(value = 'mytran', propagation = Propagation....
Springboot整合Mybatis-plus与oracle的项目主键类型问题
问题出现 工作过程中出现了一个很奇葩的需求,在一个Springboot整合Mybatis-plus搭的一个项目中,数据库用的oracle。老大说,考虑到之后的客户需求,可能某些表需要用字符串作为主键,某些可以用数字作为主键。 一个项目难道不是应该统一表的主键类型嘛,我一时很纳闷,但是老大既然这么说了,那就想办法实现吧。 Mybatis-plus配置 以下是Mybatis-plus的配置: # my...
Mybatis、Oracle、前端传值的时间字段遭遇的坑
首先是踩了坑花了2小时的教训才学聪明了,最好的解决方案是 将对象字段和数据库字段都设置 Date类型,这样在mybatis中可以直接比较。 当时由于idea上xml的检测机制问题,字段的重复比对需要添加注释,不然报SQldialect no configured的error,当然你也可以把IDEA设置中File -&gt; setting 搜索inspections,再搜索sql,找到SQL ...
Mybatis逆向工程针对Oracle数据库
        点击打开链接https://blog.csdn.net/dingsai88/article/details/51252272如果指定的oracle数据库下的多个表空间存在同一张表时,必须要指定schema的值,否则要出现生成的代码和Mapper.xml文件中出现重复的代码和配置,然后导致项目在启动时出现以下错误:Caused by: java.lang.IllegalArgumen...
mybatis针对oracle和mysql高效率批量插入的解决方案
mybatis针对oracle和mysql高效率批量插入的解决方案:      oracle:   Xml代码 下载   insert id="batchSave" parameterType="java.util.List">            Insert into table_name(id,name)           foreach collectio
Mybatis对Oracle进行批量插入和更新操作,避免常用的错误!
第一种方式: &amp;lt;insert id=&quot;batchRoleMenu&quot; parameterType=&quot;java.util.List&quot; useGeneratedKeys=&quot;false&quot;&amp;gt; INSERT ALL &amp;lt;foreach item=&quot;item&quot; index=&quot;index&quot; collection=&quot;list&quot; separator=&
mybatis取Oracle序列,值相同问题处理
&amp;lt;select id=&quot;getCode&quot; resultType=&quot;java.lang.String&quot;&amp;gt; select 'TRD'||to_char(sysdate,'yyyymmdd')||lpad(to_char(SQ_ORD_PURCHASE_ID.nextval), 5, '0') code from dual &amp;lt;/select&amp;gt; 上述mybatis代码...
Spring Boot 使用Oracle集成Mybatis,驼峰映射(下划线)问题
问题描述: 数据库字段为USER_ID,实体类为userId,在application.xml做如下配置,可以自动进行映射: mybatis.configuration.mapUnderscoreToCamelCase=true或新建mybatis.xml配置文件 进行以上配置后,并没有映射成功,查出来的数据都为null。 问题分析: 1、把项目整体迁移到My
Java 解决oracle in 条件 不能大于1000的问题
工具类:SqlInConditionStringUtil 其中:getOracleSQLIn方法适合单一SQL语句 getOracleSQLIn方法适合嵌套SQL语句 [code=&quot;java&quot;] public static String getOracleSQLIn(List ids, int count, String field) { count...
Mybatis+Oracle批量插入(自动过滤重复数据)与删除
在DAO层Mapper方法中参数为List         insert into usi_user_role (user_id,role_id)         select #{item.userid,jdbcType=VARCHAR},     #{item.roleid,jdbcType=VARCHAR} from dual  where not exists(sel
Mybatis兼容多套数据库(Oracle,SqlServer,Mysql),resultType如果是用Map或Map的子类,存在返回的key大小写的问题,解决方案
1.新建一个CustomCaseLinkHashMap继承LinkedHashMap,代码如下 /** * 自定义LinkHashMap(主要是为了在mapper.xml里面的resultType为map的时候,要兼容两套数据库,Oracle是大写的key,sqlserver是小写的key) * * @param &amp;lt;V&amp;gt; * @author XiaoYiWW */ pub...
解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
今天把notice表中的content字段改为long字段后,含有该字段的使用CTE的查询语句报错了。提示一下错误 ### Cause: java.sql.SQLException: 流已被关闭 ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17027]; 流已被关闭; nested excepti
mybatis 分号问题 , 多语句执行
需要连接mysql 开启mysql的多句sql 执行配置
不同数据库下的Mybatis映射文件的写法
C#项目,oracle 、mysql 、sqlserver数据库下,mybatis的映射文件里,一些常用功能的写法 字符串模糊匹配 oracle {colume_name} Like '%' || #{para_name}# || '%') mysql USER_NAME Like '%$UserName$%' sqlserver USER_NAME Like '%'
mybatis中三大数据库mysql,oracle,sqlserver分别用like查询
mybatis中三大数据库mysql,oracle,sqlserver分别用like查询 1、 mysql select * from user where name like concat('%',#{name},'%') 2、 oracle select * from user where name like '%'||#{
mybatis连接Oracle所用的jar包
mybatis框架开发所用的jar ,该压缩包内含有两个jar包,一个是框架必须,另外一个是Oracle连接所用的jar包
mybatis使用oracle关键字
**mybatis中如果使用的字段是oracle的关键字,会出现错误 解决方式是 可以使用resultMap**<!-- 预约日历用 --> <resultMap id="FullDateResultMap" type="com.haier.hrssc.reserveschedual.dto.FullcalendaDTO"> <id property="id" colum
mybatis oracle下不同表空间表名重复与批量删除,新增
mybatis自动生成中会遇到oracle不同表空间中有相同的表明,错误提示让你选择指定表空间 需要在生成的xml中添加指定的表空间用户名就可以了 enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
mybatis+oracle批量插入,批量更新
mybatis+oracle批量插入,批量更新 入参list中为map或者Bean都行,返回为插入条数 <insert id="saveList" parameterType="java.util.List"> insert into RISK_RECHARGES (RCR_ID, TASK_ID, TIME, AMOUNT, TYPE) select risk_
mybatis中Oracle参数为NULL错误解决
在Mybatis操作Oracle数据库的时候(PS:mysql中不会出现),会遇到个小问题,当数据库为Oracle时候,插入某个参数数据如果为null,mybatis会报错,提示类型不正确,原因是当插入数据为null类型的时候,mybatis会自动转换为JdbcType.OTHER类型,因此需要修改一下参数的转换类型有两种方式可以解决:1.公共配置方法:在Mybatis配置中设置jdbcTypeF...
Java通过mybatis插入Oracle数据库中Date格式不显示到时分秒问题
用mybatis generator生成代码后,执行查询语句时,Oracle里的Date类型字段只精确到年月日,后面时分秒都为零。 后来发现是jdbcType问题,改成 jdbcType="TIMESTAMP" 就可以。(原先默认生成时是jdbcType="DATE") ps:实体类里Date是Java.util.Date包里的,不是java.sql.Date,否则也会只精确到年月日
关于使用Mybatis逆向工程针对Oracle数据库表生成代码需要注意的问题
在使用Mybatis逆向工程针对Oracle数据库表生成代码时需要注意,如果指定的oracle数据库下的多个表空间存在同一张表时,必须要指定schema的值,否则要出现生成的代码和Mapper.xml文件中出现重复的代码和配置,然后导致项目在启动时出现以下错误: Caused by: java.lang.IllegalArgumentException: Result Maps collecti
mybatis中用Map接收oracle的结果集key大写或oracle查询结果列名为大写解决方案
转自https://blog.csdn.net/chenbhhh/article/details/80736026  mybatis中用Map接收oracle的结果集key默认是大写的         select        name  as   &quot;name&quot;   from detail 这样处理即可 ,注意是双引号      as   &quot;name&quot;...
MyBatise代码自动生成时候Oralce的number类型BigDecimal问题
第一次使用MyBatise发现一个问题,使用MyBatise的代码自动生成工具时候,即便在配置文件中定义了 Xml代码 &lt;javaTypeResolver&gt; &lt;propertyname="forceBigDecimals"value="false"/&gt; &lt;/javaTypeResolver&gt; 生成之后的实...
Oracle数据库mybatis 插入空值时的处理
Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)的两种解决方案在使用Mybatis 3 时,发现了这个问题,当插入数据时,如果有一个字段为空值时,系统会报异常,导致插入数据失败。异常信息类似:org.springframework.jdbc.UncategorizedSQLException:Error setting null for parameter...
解决mybatis中查询CLOB问题
其中TP_ELEMENT数据类型为CLOB,自定义返回结果集,jdbcType设置为VARBINARY&amp;lt;result property=&quot;TP_ELEMENT&quot; column=&quot;TP_ELEMENT&quot; javaType=&quot;java.lang.String&quot; jdbcType=&quot;VARBINARY&quot;/&amp;gt;
mybatis中对Oracle特殊字段做处理
1.插入或更新数据库时    BLOB:rawtohex(#{字段名})   否则,会报错:ORA-01465: 无效的十六进制数字    DATE:to_date(#{字段名},'yyyy-mm-dd hh24:mi:ss')    2.查询   BLOB:UTL_RAW.CAST_TO_VARCHAR2(字段)   Date:to_char(字段名,'yyyy-mm-dd hh24...
oracle 使用MyBatis查询 返回类型为int,但是当查询结果为空NULL,报异常的解决方法
org.apache.ibatis.binding.BindingException: Mapper method 'com.XXXXX' attempted toreturn null from a method with a primitive return type (int). &amp;lt;select id=&quot;selectPageviews&quot; resultType=&quot;java.lang.I...
mybatis实现oracle批量插入,带序列(记录一下)
INSERT INTO CHECK_DETAIL( CHECK_id,CHECK_DATE,CHECK_WEEK,EMP_CODE,CHECK_TIME,CHECK_LATE,CHECK_LEAVE_EARLY, CHECK_EXCEPTION,CHECK_WORK_OVERTIME,EMP_NAME,DEPT_NAME,CHECK_LATE_TIME,DESCRIPTION
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题

相似问题