mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
2016-07-22 21:12
981 查看
今天用mybatis查询语句的时候,控制台输出的sql语句可以在mysql中可以正确执行,但是查询出来就是没有数据。
原查询语句如下(为展示问题明确,将sql进行了简化):
此sql可以在mysql中正确执行,但是查询不到数据。
解决办法是:将查询条件中的“#”替换成“$”.
原因如下:
MyBatis看到 #{}会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(自动在前后加单引号)也就是说,他把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值
而MyBatis看到${}的时候会直接将之替换成变量的值而不做任何处理。
mybatis $ # 具体区别可以参考:这里写链接内容
原查询语句如下(为展示问题明确,将sql进行了简化):
<select id="getListByQueryValue" parameterType="Map" resultType="Map"> SELECT * FROM province <where> <if test="strWhere != null and strWhere!= ''"> AND ( #{strWhere} ) </if> </where> </select>
此sql可以在mysql中正确执行,但是查询不到数据。
解决办法是:将查询条件中的“#”替换成“$”.
原因如下:
MyBatis看到 #{}会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(自动在前后加单引号)也就是说,他把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值
而MyBatis看到${}的时候会直接将之替换成变量的值而不做任何处理。
mybatis $ # 具体区别可以参考:这里写链接内容
相关文章推荐
- 让Django支持Sql Server作后端数据库
- Ubuntu 14.04 安装eclipse4及oracle-java8
- Mac brew安装mysql之后无法启动mysql
- Navicat Premium mysql
- Mysql索引
- oracle数据库管理员简介、导入数据与导出数据
- MySQL数据备份和恢复
- SQL四中连接(左外连接、右外连接、内连接、全连接)
- mysql 通过慢查询日志查写得慢的sql语句
- MySQL用户管理
- MySql 保存大文件
- MSSQL常用数据类型
- 表中添加字段组成关系component的使用
- 学好数据库,看这9本书就够了
- LINUX下安装Redis
- PHP 使用 Redis
- 初识Redis
- mysql 第四天
- oracle恢复某段时间点的数据
- 忘记mysql密码如何修改?