mybatis写数据库语句的时候报这个错误不知道是什么原因造成的,困扰了很多天
使用 <![CDATA[]> 标签试试,例如:
<select id="gtBlogs" resultType="Blog">
<![CDATA[
select * from t_blog where id < #{blogId}
]]>
</select>
将查询条件中的“#”替换成“$”.
原因如下:
MyBatis看到 #{} 会认为你在给sql中的【变量赋值】,
就像JDBC编程中给问号赋值一样(自动在前后加单引号)。
也就是说,它把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值。。。
而MyBatis看到 ${} 的时候,会【直接】将之【替换】成变量的值而不做任何处理。
仅从报错信息上看,是将值set到Map时出现错误,可能情况有:
1、检查下select后面的值和映射map的值对否对的上,包括字段、数量、类型是否对的上。
2、看下like后面是否要拼接%
3、将to_date后面的值转换的pattern换一下,换成yyyyMMdd看下
4、可以将map映射也贴出来看下。
xml文件里大于小于不能直接写<>会被解析成标签的
'<' 用&加lt加分号替换
'>' 用&加gt加分号替换