ITKeyword,专注技术干货聚合推荐

注册 | 登录

mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据

xunzaosiyecao 分享于 2016-07-22

推荐:s2sh向数据库插入数据,控制台有打印sql语句,数据库查询不到数据问题

在数据库中查询不到插入的数据,在查询分析器中写insert语句可以插入,通过show_sql能在控制台显示执行的sql语句,并且主键会增加1, 在hibernate.cfg.xml的配置

2018阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

今天用mybatis查询语句的时候,控制台输出的sql语句可以在mysql中可以正确执行,但是查询出来就是没有数据。
原查询语句如下(为展示问题明确,将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编程中给问号赋值一样(自动在前后加单引号)也就是说,他把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值

推荐:主流数据库查询前几行的sql语句

主流数据库查询前几行的sql语句 SqlServer  select top 10 * from tablename; Informix select first 10 * from tablename; Oralce select * from tablename whe

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

mybatis $ # 具体区别可以参考:这里写链接内容

作者:jiankunking 出处:http://blog.csdn.net/jiankunking

推荐:SQL数据库查询实现行转列与列转行结果SQL语句

  行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。 用传统的方

今天用mybatis查询语句的时候,控制台输出的sql语句可以在mysql中可以正确执行,但是查询出来就是没有数据。 原查询语句如下(为展示问题明确,将sql进行了简化): <select id="getListByQuery

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。