mybatis 查询不出结果,但是打印的SQL 可以执行
问题描述:
我今天发现了一个非常诡异的错误,我在此请求大家集思广益一下.
我的系统采用的是 spring + mybatis ,我在做一个简单的数据查询的时候碰到查询不出来的问题,开始我认为是 resultMap 配置有问题,后台我测试很多遍发现不是这个原因, 最后我发现一个诡异的事情,
List resList = sysUserAccountService.selectByParam(sysUserAccount);
这个语句是一个简单的调用service 在调用--> mapper 的简单查询,在我采用 (1) 号 写法的时候 ,可以正常返回 LIST
但是采用 (2) 号 写法的时候,,,LIST = null
也就是说我无法带值进去查询,但是写 where id is not null 是可以查询到, 写 where id = 'A001' LIST 就是 等于NULL
另外一个问题就是,某些SQL语句, JAVA 调用DAO方法的结果为NULL的时,mybatis 的日志打印出来的SQL 我试着放到 数据库工具中运行是有结果,也就代表SQL 肯定没写错.
selelect (1) 号
<select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount">
select * from sys_user_account
</select>
1号 返回结果正常,LIST收到100多个记录
selelect (2) 号
<select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount">
select * from sys_user_account
where ACCOUNT_TYPE = 3
</select>
2号 JAVA LIST 接收到的为一个空LIST ,LIST 中的元素为 null SIZE 为 0. 里面的值我都写死了,排除了传值问题,所有这么写
3号
<select id="selectByParam" resultMap="AccountBaseResultMap" parameterType="org.androidpn.server.model.SysUserAccount">
select * from sys_user_account
where ACCOUNT_TYPE is not null
</select>
结果是正常,查询到了所有 TYPE 不为空的
我感觉很奇怪,找了很久都没有找到问题,希望有人能帮帮我.
答
我也遇到同样问题