Oracle的表字段带有双引号,Mybatis报 An identifier or literal is invalid

报错

org.springframework.jdbc.UncategorizedSQLException: 
### Error querying database.  Cause: java.sql.SQLException: An identifier or literal is invalid
### The error may exist in file [/app/domain/user_projects/domains/base_domain/servers/VC/stage/visionlite/visionlite/WEB-INF/classes/com/worklite/service/statedata/resource/statedata.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select NVL(SUM(answer-"start"), 0) from call_state_info where answer is not null       and instid=?
### Cause: java.sql.SQLException: An identifier or literal is invalid
; uncategorized SQLException for SQL []; SQL state [99999]; error code [17133]; An identifier or literal is invalid; nested exception is java.sql.SQLException: An identifier or literal is invalid

sql语句单独拿出来执行不报错;但是项目一运行就会报错;

mybatis xml文件

<select id="getCustomWaitTime" resultType="long" databaseId="oracle">
    	select NVL(SUM(answer-"start"), 0) from call_state_info where answer is         
        not null
    	<if test="null!=instid and ''!=instid">and instid=#{instid}</if>
    	<if test="null!=custid and ''!=custid">and custid=#{custid}</if>
 </select>

解决:给NVL(SUM(answer-"start"), 0)取别名;

 <select id="getCustomWaitTime" resultType="long" databaseId="oracle">
    	select NVL(SUM(answer-"start"), 0) as waitTime from call_state_info where answer is 
        not null
    	<if test="null!=instid and ''!=instid">and instid=#{instid}</if>
    	<if test="null!=custid and ''!=custid">and custid=#{custid}</if>
</select>

错误原因好像是因为sum()函数计算的结果为null,但是NVL函数明明会处理这种情况;所以我也不知道为什么加了个别名就不报错了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Mybatis"Invalid bound statement"错误一般有三种可能的原因。首先,可能是由于mapper.xml文件不存在导致的。其次,可能是mapper.xml文件中的内容有误。最后,可能是mapper.xml文件的路径配置有误。解决这个问题的方法可以从以下几个方面入手。 首先,检查mapper.xml文件是否存在,确保文件路径和文件名拼写正确。如果文件不存在,需要创建或者重新配置路径。 其次,仔细检查mapper.xml文件中的内容,确保语法正确,标签闭合正确且与数据库结构对应。特别注意检查SQL语句是否正确,包括名、列名、参数等。 最后,检查mybatis的配置文件,确保mapper.xml文件的路径配置正确。可以在配置文件中查找mapper-locations属性,确认路径是否正确设置为mapper.xml所在的位置。 如果以上方法都没有解决问题,可以尝试在错的位置进行调试。根据中的代码片段,可以定位到具体的错位置并进一步排查问题。 总结来说,解决"Invalid bound statement"错误可以通过检查mapper.xml文件是否存在、确认文件内容和路径配置是否正确来解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mybatis/mybatis plus错:Invalid bound statement (not found) 解决方法汇总](https://blog.csdn.net/mashangzhifu/article/details/122808181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [mybatis错:Invalid bound statement (not found)](https://blog.csdn.net/weixin_44736853/article/details/124857282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值