[转载]MyBatis中的jdbcType

本文介绍了 MyBatis 中 JDBCType 与 Oracle、MySQL 数据类型的对应关系,包括基本的数字、时间、字符串等常见类型,并强调了官方文档的重要性。

1.Mybatis JdbcType与Oracle、MySql数据类型对应列表

MybatisJdbcTypeOracleMySql
JdbcTypeARRAY  
JdbcTypeBIGINT BIGINT
JdbcTypeBINARY  
JdbcTypeBIT BIT
JdbcTypeBLOBBLOBBLOB
JdbcTypeBOOLEAN  
JdbcTypeCHARCHARCHAR
JdbcTypeCLOBCLOBCLOB–>修改为TEXT
JdbcTypeCURSOR  
JdbcTypeDATEDATEDATE
JdbcTypeDECIMALDECIMALDECIMAL
JdbcTypeDOUBLENUMBERDOUBLE
JdbcTypeFLOATFLOATFLOAT
JdbcTypeINTEGERINTEGERINTEGER
JdbcTypeLONGVARBINARY  
JdbcTypeLONGVARCHARLONG VARCHAR 
JdbcTypeNCHARNCHAR 
JdbcTypeNCLOBNCLOB 
JdbcTypeNULL  
JdbcTypeNUMERICNUMERIC/NUMBERNUMERIC/
JdbcTypeNVARCHAR  
JdbcTypeOTHER  
JdbcTypeREALREALREAL
JdbcTypeSMALLINTSMALLINTSMALLINT
JdbcTypeSTRUCT  
JdbcTypeTIME TIME
JdbcTypeTIMESTAMPTIMESTAMPTIMESTAMP/DATETIME
JdbcTypeTINYINT TINYINT
JdbcTypeUNDEFINED  
JdbcTypeVARBINARY  
JdbcTypeVARCHARVARCHARVARCHAR

注意到, MyBatis的JdbcType中部分没有对应到Oracle和Mysql的数据类型中(或许由于自己遗漏),不过不用担心,后续大家碰到再具体分析;同时上述对应关系不一定是一一对应,请大家了解。

大家主要掌握基本的数字、时间、字符串就足以应对日常开发了。

2.Mybatis JdbcType官方文档

Mybatis JdbcType官方文档

8263107-ad1ac94c131609b1

Mybatis JdbcType官方文档

查阅Mybatis JdbcType官方文档是很有必要的!

转载请注明来源-作者@loongshawn:http://blog.youkuaiyun.com/loongshawn/article/details/50496460

### 介绍 在MyBatis中,`jdbcType` 用于指定SQL语句中参数或结果集字段对应的JDBC类型。它在Java对象和数据库之间进行数据类型的映射和转换时发挥着关键作用,保证数据能够准确无误地在Java程序和数据库之间传递。若未正确设置 `jdbcType`,在某些特殊情况下,如传入的参数为空时,可能会使程序出现问题,常见的如 “无效的列类型: 1111” 错误 [^1][^3]。 ### 使用方法 #### 插入数据时指定 `jdbcType` 在插入数据时,可在SQL语句中为参数指定 `jdbcType`。示例如下: ```xml <insert id="insertUser" parameterType="User"> INSERT INTO users (id, name, age) VALUES (#{id, jdbcType=VARCHAR}, #{name, jdbcType=VARCHAR}, #{age, jdbcType=INTEGER}) </insert> ``` 此示例中,`#{id, jdbcType=VARCHAR}` 表明 `id` 参数的 `jdbcType` 为 `VARCHAR`,`#{name, jdbcType=VARCHAR}` 表示 `name` 参数的 `jdbcType` 为 `VARCHAR`,`#{age, jdbcType=INTEGER}` 意味着 `age` 参数的 `jdbcType` 为 `INTEGER`。 #### 查询数据时指定 `jdbcType` 在查询数据时,可在结果映射中为字段指定 `jdbcType`。示例如下: ```xml <resultMap id="userResultMap" type="User"> <result property="id" column="id" jdbcType="VARCHAR"/> <result property="name" column="name" jdbcType="VARCHAR"/> <result property="age" column="age" jdbcType="INTEGER"/> </resultMap> <select id="getUserById" parameterType="String" resultMap="userResultMap"> SELECT id, name, age FROM users WHERE id = #{id} </select> ``` 在上述示例里,`resultMap` 为每个字段指定了 `jdbcType`,确保查询结果能正确映射到Java对象的属性。 ### 作用 - **保证程序安全性**:当传入的参数为空时,指定 `jdbcType` 可避免MyBatis因不清楚要转换的具体JDBC类型而报错,提升程序的稳定性 [^1]。 - **确保数据类型映射准确**:`jdbcType` 能帮助MyBatis准确地将Java对象的数据类型转换为数据库支持的类型,以及将数据库中的数据类型转换为Java对象的属性类型,保证数据在Java程序和数据库之间的正确传递 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值