mybatis3.2.0与mybatis3.3.0传参异常
2016-04-28 10:48
148 查看
[size=small]项目使用的是SpringMvc3.2.2+Mybatis3.2.0+SQLServer,经常会有根据某个主键字段查询数据,通常都是Integer类型,写sql的时候一般会类似这样:[/size]
上面的sql中我们设定的parameterType是Integer,查询条件的pid类型也是Integer,service层定义一个抽象的公用泛型get方法,子类去实现:
调用时如下:
在mybatis3.2.0版本下,调用的时候定义了一个String参数类型,如下
最后查询出来的结果也是正常的,并无出现参数类型转换错误。后来把mybatis升级到3.3.0之后,问题就来了,调用get方法时,原先传入的字符串"123"会提示参数类型错误,改成传入整形的123就不会出错了。
<mapper namespace="com.back.dao.PersonDao">
<resultMap id="BaseMap" type="com.back.pojo.Person">
<result column="pid" property="pid" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="remark" property="remark" jdbcType="VARCHAR" />
</resultMap>
<select id="get" resultMap="BaseMap"parameterType="java.lang.Integer">
SELECT
pid
, name
, remark
FROM person
WHERE pid= #{pid,jdbcType=INTEGER}
</select>
</mapper>
上面的sql中我们设定的parameterType是Integer,查询条件的pid类型也是Integer,service层定义一个抽象的公用泛型get方法,子类去实现:
public abstract T get(Serializable paramSerializable);
public T get(Serializable id){
return ((PersonDao) this.dao).get(id);
}
调用时如下:
Person person = (Person )service.get(pid);
在mybatis3.2.0版本下,调用的时候定义了一个String参数类型,如下
String pid = "123";
Person person = (Person )service.get(pid);
最后查询出来的结果也是正常的,并无出现参数类型转换错误。后来把mybatis升级到3.3.0之后,问题就来了,调用get方法时,原先传入的字符串"123"会提示参数类型错误,改成传入整形的123就不会出错了。
上面列举的是xml文件的sql参数是pid= #{pid,jdbcType=INTEGER},调用传入的可能是字符串;另外一种情况就是pid= #{pid,jdbcType=VARCHAR},调用传入的可能是整形,这两种在mybatis3.2.0都可以正常查询,相反在mybatis3.3.0都会出错。这里提醒下各位在开发的时候严格按照数据类型来,一不小心就掉坑里了,仅供借鉴。
相关文章推荐
- MyBatis3.3.0关于invalid comparison: java.sql.Timestamp and java.lang.String异常的解决
- MyBatis的Mapper传参异常
- Mybatis3.3.0异常总结
- Mybatis异常
- JAVA魔法堂:折腾Mybatis操作SQLite的SQLException:NYI异常
- MyBatis传参问题
- mybatis 传参为 Integer 时 ,Mapper 文件 中判断 条件 问题,传入0值,直接忽略判断
- 使用MyBatis查询int类型字段,返回NULL值时报异常的解决方法
- MyBatis常见异常解决方案
- mybatis参数中包含数组和集合时候怎么传参?
- Mybatis resultType异常
- Mybatis异常: protocol = http host = null
- Mybatis 中在传参时,$ 和# 的区别
- spring mvc +Mybatis3.1 整合的时候异常
- Spring MVC +MyBatis +MySQL 登录查询Demo 解决了mybatis异常【转】
- mybatis提示异常,元素类型为 &quot;mapper&quot; 的内容必须匹配 &quot;。。。。
- mybatis传参问题,一个或多个参数
- Mybatis异常-java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.N...
- MyBatis注解模式批量插入异常
- mybatis异常invalid comparison: java.util.Date and java.lang.String