MyBatis学习:mapper.xml文件中传参时,标签使用javaType和jdbcType属性

本文详细讲述了在MyBatis中javaType和jdbcType属性的使用,包括它们在mapper.xml文件中的应用示例,以及在项目生成器中的必要性。通过实例介绍了这两种属性如何确保参数类型匹配和数据库字段映射,对于开发者在自动生成代码时的精确性至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、本篇博文的背景和目的

目前我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,明晰了在Web项目中的普遍编码层次,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。记录了dao层接口的实现以及为什么要实现它。记录了MyBatis动态代理和使用动态代理的要求以及使用了动态代理生成的实现类,记录了parameterType属性和它的使用。记录了MyBatis框架下执行SQL语句传递简单类型参数的方法。本篇博客记录mapper.xml文件传参时,使用javaType属性和jdbcType属性。

2、我的上一篇博文

上一篇博文记录的是给SQL语句传递实体类对象参数的方法,感兴趣的读者可以查阅,链接如下:

MyBatis学习:MyBatis框架下执行SQL语句传递实体类参数_你是我的日月星河的博客-CSDN博客目前我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,明晰了在Web项目中的普遍编码层次,认识了框架,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。...https://blog.csdn.net/weixin_46281472/article/details/126089273

3、使用javaType属性和jdbcType属性使用的代码位置

javaType属性和jdbcType属性应用在mapper.xml文件的标签内,传参的时候  #{  }  内部。这里我直接给出示例:

<select id="selectByQueryParam2" resultType="com.bjpowernode.domain.Student">
    select * from student where
    name=#{p1,javaType=java.long.String,jdbcType=VARCHAR} or
    age=#{p2,javaType=java.long.Integer,jdbcType=INTEGER}
</select>

可以从名字中看出来:javaType就是指定传过来的参数的所属java类型,javaType属性值是类型的全限定路径名称,当然也可以是别名。这个在MyBatis官方文档手册中有,与resultType属性值有点类似。jdbcType就是标识指定出对应的数据库中字段的类型。jdbcType属性值在MyBatis官方文档手册中是有的。这里我粘贴一下java中的类型和数据库中的类型之间的对应,如下所示:

JDBC Type           Java Type  
CHAR                String  
VARCHAR             String  
LONGVARCHAR         String  
NUMERIC             java.math.BigDecimal  
DECIMAL             java.math.BigDecimal  
BIT                 boolean  
BOOLEAN             boolean  
TINYINT             byte  
SMALLINT            short  
INTEGER             INTEGER  
BIGINT              long  
REAL                float  
FLOAT               double  
DOUBLE              double  
BINARY              byte[]  
VARBINARY           byte[]  
LONGVARBINARY       byte[]  
DATE                java.sql.Date  
TIME                java.sql.Time  
TIMESTAMP           java.sql.Timestamp  
CLOB                Clob  
BLOB                Blob  
ARRAY               Array  
DISTINCT            mapping of underlying type  
STRUCT              Struct  
REF                 Ref  
DATALINK            java.net.URL

4、javaType属性和jdbcType属性的使用场景

其实在一般写项目的时候,这两个属性是不写的,就像是parameterType一样,是可有可无的。

但是,当写一个  代码生成器的时候,这个就需要必须加上去,为了自动生成代码的准确性。能写代码生成器程序的,我目前认为肯定也是经验很丰富的程序员了!!

5、我的下一篇博文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你是我的日月星河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值