您的位置:首页 > 数据库

mybatis执行查询语句,可以在plsql中查询数据,但是在程序中查询不到

2015-02-09 14:35 176 查看
今天用mybatis查询语句的时候,控制台输出的sql语句可以在plsql里面可以正确执行,但是查询出来就是没有数据。
原查询语句如下:(为了保密性,将敏感的包名给马赛克了。)



此sql可以在plsql中正确执行,但是查询不到数据。
解决办法是:将查询条件中的“#”替换成“$”.
原因如下:MyBatis看到 #{}会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(自动在前后加单引号)也就是说,他把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值)
而MyBatis看到${}的时候会直接将之替换成变量的值而不做任何处理。

2015-09-09补充遇到类似问题的情况:
今天在项目中由于jsp中传递后台的参数多了一个空格,导致查询一直查询不到数据,将参数和sql复制到plsql能正常执行,但是放在程序中一直返回null,百思不得其解。然后看看日志发现可能是空格影响的。最后将空格去掉,问题正常。下图分别是产生问题的后台代码和日志和jsp页面代码截图:



重点是jsp中的参数截图,都快被自己蠢哭了,截图很小,因为就是这一行影响的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐