SQL中where in的用法以及mybatis执行查询语句,可以在plsql中查询数据,但是在程序中查询不到

首先我们要知道where是什么:一个判断符。在SQL操作中,控制只选择指定的行。
in的其实归类于特殊的比较运算符
expr1 between expr2 and expr3:表示expr1的值在expr2和expr3之间
expr in(expr2,expr3,expr4,…)表示expr1等于后面括号里面的任意一个表达式的值
like:字符串匹配,like后的字符创支持通配符

is null:要求指定值等于null

=======================================================

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

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

  SQL中where in的用法以及mybatis执行查询语句,可以在plsql中查询数据,但是在程序中查询不到

此sql可以在plsql中正确执行,但是查询不到数据。

解决办法是:将查询条件中的“#”替换成“$”.

原因如下:MyBatis看到 #{}会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(自动在前后加单引号)也就是说,他把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值)

            而MyBatis看到${}的时候会直接将之替换成变量的值而不做任何处理。


2015-09-09补充遇到类似问题的情况:

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

SQL中where in的用法以及mybatis执行查询语句,可以在plsql中查询数据,但是在程序中查询不到

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

SQL中where in的用法以及mybatis执行查询语句,可以在plsql中查询数据,但是在程序中查询不到


用了where in赋值要全部替换不能用#

SQL中where in的用法以及mybatis执行查询语句,可以在plsql中查询数据,但是在程序中查询不到