`
assen
  • 浏览: 62236 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mybatis3.2.0与mybatis3.3.0传参异常

阅读更多
项目使用的是SpringMvc3.2.2+Mybatis3.2.0+SQLServer,经常会有根据某个主键字段查询数据,通常都是Integer类型,写sql的时候一般会类似这样:
<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都会出错。
这里提醒下各位在开发的时候严格按照数据类型来,一不小心就掉坑里了,仅供借鉴。
0
6
分享到:
评论

相关推荐

    mybatis-3.2.8 mybatis-3.3.0-SNAPSHOT.jar

    MyBatis的两个关键版本,即mybatis-3.2.8和mybatis-3.3.0-SNAPSHOT,具有各自的特点和改进,以下将详细介绍这两个版本的知识点。 首先,mybatis-3.2.8是MyBatis的一个稳定发布版,主要关注于性能优化和一些bug修复...

    mybatis-3.2.0说明文档

    通过这个配置文件,MyBatis能够理解数据库连接细节、SQL语句映射规则以及对象与数据库表之间的映射关系。 ### 四、Mapper XML文件 #### 4.1 Mapper XML文件的作用 Mapper XML文件用于定义具体的SQL语句和结果映射...

    mybatis-3-mybatis-3.3.0.rar

    在压缩包子文件的文件名称列表中,出现了"mybatis-3-mybatis-3.3.0.zip"和"mybatis-3-mybatis-3.3.0.tar.gz"两个文件,这通常是MyBatis源码的不同压缩格式,分别对应ZIP和GZ压缩。解压这些文件后,开发者可以查看...

    mybatis-3-mybatis-3.3.0.zip

    在"Mybatis-3-mybatis-3.3.0.zip"这个压缩包中,我们可以找到MyBatis框架的3.3.0版本。这个版本是MyBatis发展历史上的一个重要里程碑,它包含了许多增强特性和改进,旨在提高开发效率和性能。 1. **核心组件**: -...

    mybatis-3.2.0-SNAPSHOT.jar mybatis-spring-1.1.1.jar

    mybatis-spring是一个用于整合MyBatis与Spring的库,1.1.1版本提供了一些关键特性: 1. **SqlSessionTemplate和SqlSessionFactoryBean**:这两个类是mybatis-spring的核心,它们帮助我们在Spring环境中无缝地使用...

    基于struts2.2.6+Mybatis3.2.0+spring3.1的整合项目

    **基于Struts2.2.6+Mybatis3.2.0+Spring3.1的整合项目** 这个项目是一个典型的Java Web应用框架整合实例,它将三个流行的技术——Struts2、Mybatis和Spring——集成在一起,以实现高效、灵活的后端开发。下面将分别...

    mybatis-3.2.0-SNAPSHOT-bundle.zip

    **MyBatis 3.2.0 版本的改进与特性:** 1. **性能优化**: 每个新版本通常都会对框架性能进行优化,提升运行效率。 2. **新特性**: 可能包含新的API或功能,比如更强大的动态SQL支持。 3. **错误修复**: SNAPSHOT...

    mybatis-3.2.0-SNAPSHOT-bundle

    9. 异常处理:MyBatis有一套完整的异常体系,包括SqlMapException、PersistenceException等,方便开发者处理不同类型的数据库操作异常。 10. 数据源配置:MyBatis支持多种数据源类型,包括单数据源、多数据源和...

    mybatis-3-mybatis-3.2.0.zip

    标签"mybatis"是MyBatis框架的关键词,"mybatisSource"强调了源码的重要性,"免费下载"则表示这些资源对公众开放,无需支付任何费用,"java"则明确了这是与Java语言相关的技术。 在压缩包子文件的文件名称列表中,...

    mybatis-3.2.0-SNAPSHOT

    mybatis-3.2.0-SNAPSHOT

    mybatis-3.2.0.jar

    mybatis官方JAR包 版本: mybatis-3.2.0.jar

    mybatis-3.2.0-bundle.zip

    标题中的"mybatis-3.2.0-bundle.zip"表明这是一个包含MyBatis框架3.2.0版本的压缩包。在MyBatis的发展历程中,每个版本都会带来一些改进和新特性。3.2.0版本发布于2013年,它可能包含了对之前版本的bug修复、性能...

    mybatis-3-mybatis-3.3.0-SNAPSHOT.zip

    在深入探讨MyBatis 3.3.0的源码之前,先了解一下这个框架的基本概念和工作原理。 MyBatis的核心是SqlSession,它是与数据库交互的接口,通过SqlSessionFactory创建。SqlSessionFactory是配置信息的工厂,它会根据...

    mybatis-plus-boot-starter-3.3.0.jar

    mybatis-plus-boot-starter.jar 各个版本下载, ...Mybatis-Plus(简称MP)是一个基于MyBatis的增强工具库,它简化了与数据库的交互操作并提供了一系列增强功能,使开发者能够更加方便快捷地进行数据库访问。

    mybatis_3.3.0.jar

    标签中的"mybatis java mybatis3.3.0 mybatis.jar jar"表明了这个文件与Java编程语言、MyBatis框架的3.3.0版本、MyBatis的jar文件以及Java的jar包格式相关。这些标签可以帮助开发者快速识别这个文件的用途和依赖。 ...

    mybatis-plus-3.3.0.jar

    mybatis-Plus.jar 各个版本...Mybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。

    总结--Mybatis传递参数的几种方法

    Mybatis 传递参数的几种方法 Mybatis 中传递参数有多种方法,以下是其中的四种: 1. 传递单个参数 在 Mybatis 中,传递单个参数非常简单。可以直接将参数写在方法中,参数类型可以是 String,也可以是基本类型,...

    mybatis-3-mybatis-3.3.0.tar.gz

    在本压缩包 "mybatis-3-mybatis-3.3.0.tar.gz" 中,包含了 MyBatis 的 3.3.0 版本的源码,这对于学习、理解和调试 MyBatis 的工作原理非常有帮助。 MyBatis 的核心设计理念是将 SQL 语句与 Java 代码分离,通过 XML...

Global site tag (gtag.js) - Google Analytics