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中的参数截图,都快被自己蠢哭了,截图很小,因为就是这一行影响的。
原查询语句如下:(为了保密性,将敏感的包名给马赛克了。)
此sql可以在plsql中正确执行,但是查询不到数据。
解决办法是:将查询条件中的“#”替换成“$”.
原因如下:MyBatis看到 #{}会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(自动在前后加单引号)也就是说,他把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值)
而MyBatis看到${}的时候会直接将之替换成变量的值而不做任何处理。
2015-09-09补充遇到类似问题的情况:
今天在项目中由于jsp中传递后台的参数多了一个空格,导致查询一直查询不到数据,将参数和sql复制到plsql能正常执行,但是放在程序中一直返回null,百思不得其解。然后看看日志发现可能是空格影响的。最后将空格去掉,问题正常。下图分别是产生问题的后台代码和日志和jsp页面代码截图:
重点是jsp中的参数截图,都快被自己蠢哭了,截图很小,因为就是这一行影响的。
相关文章推荐
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- Hibernate的hql语句查询不到内容,但是库里有数据,直接执行SQL也能执行,能得到值,返回值取不到
- plsql可以查到数据,但是程序查不到
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- 用hibernate翻译的sql在sqlplus可以查询出数据,但是程序查询为空
- plsql查询带中文的sql语句查询不到数据
- 同样的一句SQL语句在pl/sql 代码块中count 没有数据,但是直接用SQl 执行却可以count 得到结果
- 客户端可以查询到数据,程序却查询不到数据
- Mybatis程序中执行和单独执行同一条SQL出现结果不一致(部分数据没有查询出来)
- 有些access语句在数据库中可以执行,但是在C#上又不能执行,比如模糊查询-like
- 微信小程序在开发工具上可以编译但是手机预览请求不到数据
- CMD 插入数据,MyBatis测试程序中查询不到最新的数据问题
- 【Android问题记录】为什么在终端直接查询数据库可以查到数据但是用代码总是查不到
- 尽管普通的sql语句代码可以实现数据插入的操作,但是更好的代码应该是参数的方式:
- MyBatis直接执行SQL查询及批量插入数据
- hibernate生成查询语句但查不到数据
- s2sh向数据库插入数据,控制台有打印sql语句,数据库查询不到数据问题
- 现在有这样一个问题 我把上W条数据插入表内,但是发现还有一条数据没进入表里.我想查出来是哪个数据没进去. 能用查询语句查出来吗?
- hibernate生成查询语句但查不到数据