我在用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 && idcard_no.length()!=0">
and idcard_no=#{idcard_no,jdbcType=VARCHAR}
</if>
<if test="real_name!=null && real_name.length()!=0">
and real_name=#{real_name,jdbcType=VARCHAR}
</if>
<if test="login_name!=null && login_name.length()!=0">
and login_name like CONCAT('%',#{login_name,jdbcType=VARCHAR},'%')
</if>
<if test="status!=null && status.length()!=0">
and status=#{status,jdbcType=VARCHAR}
</if>
</where>
</select>
这是sql拦截的截图
我用的是MySQL数据库,在MySQL中直接用sql查询中文参数能出结果,而且JSP、xml、和数据库URL中都配置了utf-8参数,我用p6spy来截取sql,日志文件中显示的sql语句中中文参数也是正确显示的,请问下各位出现这种情况的原因在哪?或者有其他方法实现中文参数搜索吗?
把sql复制到mysql,查询以下就知道了. 有可能是字符编码的问题.
<if test="login_name!=null && login_name.length()!=0">
and login_name like '%$login_name$%'
</if>
改为这个试下
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。