开发者社区> 问答> 正文

mybatis+spring搭建web项目,输入中文参数进行where查询无法得到结果,什么原因?

我在用spring+mybatis开发时,有一个页面需要进行搜索,并且是中文参数,我是用mybatis的where标签进行查询,具体代码如下:

<select id="accountRows" parameterType="com.future.entity.page.AccountPage" resultType="Integer">
            select count(*) from account
            <where>
                <if test="idcard_no!=null &amp;&amp; idcard_no.length()!=0">
                    and idcard_no=#{idcard_no,jdbcType=VARCHAR}
                </if>
                <if test="real_name!=null &amp;&amp; real_name.length()!=0">
                    and real_name=#{real_name,jdbcType=VARCHAR}
                </if>
                <if test="login_name!=null &amp;&amp; login_name.length()!=0">
                    and login_name like CONCAT('%',#{login_name,jdbcType=VARCHAR},'%')
                </if>
                <if test="status!=null &amp;&amp; status.length()!=0">
                    and status=#{status,jdbcType=VARCHAR}
                </if>
            </where>
    </select>

这是sql拦截的截图
1
我用的是MySQL数据库,在MySQL中直接用sql查询中文参数能出结果,而且JSP、xml、和数据库URL中都配置了utf-8参数,我用p6spy来截取sql,日志文件中显示的sql语句中中文参数也是正确显示的,请问下各位出现这种情况的原因在哪?或者有其他方法实现中文参数搜索吗?

展开
收起
落地花开啦 2016-06-02 17:09:21 4234 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    把sql复制到mysql,查询以下就知道了. 有可能是字符编码的问题.

    <if test="login_name!=null &amp;&amp; login_name.length()!=0">
                        and login_name like '%$login_name$%'
                    </if>

    改为这个试下

    2019-07-17 19:25:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载