mybatis+spring搭建的web项目,在输入中文参数进行where查询时无法得到结果

jolly878 发布于 2015/05/06 11:48
阅读 2K+
收藏 0

我在用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拦截的截图

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


加载中
0
南湖船老大
南湖船老大
可能是jdbc 字符串的问题 加上 useUnicode=true&characterEncoding=utf8 试试
jolly878
jolly878
这个我也加了
0
xyxo
xyxo

直接数据库查询一下,看看有结果集否? 也许压根就没有刘德华。可能是“(空格)刘德华 ”

jolly878
jolly878
这个我试过了,能查出结果
0
lgscofield
lgscofield
把sql复制到mysql,查询以下就知道了. 有可能是字符编码的问题...
jolly878
jolly878
这个我试了,有结果
0
天使守护
天使守护
<if test="login_name!=null &amp;&amp; login_name.length()!=0">
                    and login_name like '%$login_name$%'
                </if>




改为这个试下

0
天使守护
天使守护
<if test="login_name!=null &amp;&amp; login_name.length()!=0">
    and login_name like '%${login_name}%'
</if>



0
javacc
javacc
请问解决了吗问题,我也遇到这样的问题了
0
小白天宇
小白天宇
编码的问题,之前我遇到过
0
大飞哥没翅膀
大飞哥没翅膀
 select count(*) from account where and...这样就有语法错误
返回顶部
顶部