MyBatis中的JdbcType映射使用详解

作者:bisal 时间:2023-09-07 20:05:38 

Java项目涉及到数据库交互,以往常用的是JDBC,现在则有Hibernate、Mybatis等这些持久化支持。

项目中用到了MyBatis,和JDBC最显著的区别,就是SQL语句配置化,通过xml文件定义SQL语句,当然JDBC也可以将SQL配置化,需要定制开发,MyBatis则直接支持这种方法。

官方对于MyBatis的介绍,

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

简单来讲,MyBatis几乎屏蔽了所有JDBC代码,用一种简单的xml,或者注解,就能完成数据库交互。

xml配置文件,可用MyBatis自己定义的数据类型,引自:http://www.mybatis.org/mybatis-3/configuration.html

Associated JDBC type can be specified by two means:

Adding a jdbcType attribute to the typeHandler element (for example: jdbcType="VARCHAR").

Adding a @MappedJdbcTypes annotation to your TypeHandler class specifying the list of JDBC types to associate it with. This annotation will be ignored if the jdbcType attribute as also been specified.

例如下面的配置,指定companyid参数类型为BIGINT,


<select id='getMeetingnoByCompanyid' parameterType="java.lang.Integer"
 resultType="java.lang.String">
 select a.meetingno
 from xxx a
 where a.companyid = #{companyid, jdbcType=BIGINT}
</select>

对于jdbcType,MyBatis的API文档有说明,引自:http://www.mybatis.org/mybatis-3/apidocs/reference/org/apache/ibatis/type/JdbcType.html

MyBatis中的JdbcType映射使用详解

另外,以下介绍给出了JdbcType和Oracle以及MySQL,相互之间的映射关系,比较详细:

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


JdbcTypeOracleMySql
JdbcTypeARRAY

JdbcTypeBIGINT
BIGINT
JdbcTypeBINARY

JdbcTypeBIT
BIT
JdbcTypeBLOBBLOBBLOB
JdbcTypeBOOLEAN

JdbcTypeCHARCHARCHAR
JdbcTypeCLOBCLOB修改为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官方文档

MyBatis中的JdbcType映射使用详解

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

3. 说明

对于自己不肯定的,调整代码多尝试下,能够使自己加深印象!

4. 更新日志

2017-04-26 修改内容:MySQL中没有CLOB类型,谢谢@火灵 指正。

MybatisJdbcTypeOracleMySql
JdbcTypeCLOBCLOBCLOB–>修改为TEXT

来源:https://bisal.blog.csdn.net/article/details/82775403

标签:MyBatis,JdbcType,映射
0
投稿

猜你喜欢

  • Unity 百度AI实现Logo商标识别

    2023-06-09 17:04:26
  • SpringMVC文件上传原理及实现过程解析

    2021-09-03 00:24:25
  • Android应用开发中Fragment间通信的实现教程

    2023-02-23 18:06:46
  • 简单了解JAVA public class与class区别

    2023-11-15 23:59:26
  • Android图片色彩变换实现方法

    2022-03-21 07:23:32
  • WPF实现页面的切换的示例代码

    2023-09-26 21:35:27
  • c语言版本二叉树基本操作示例(先序 递归 非递归)

    2023-03-17 23:40:25
  • Java二维数组查找功能代码实现

    2023-01-04 19:47:17
  • SpringBoot中@Import注解如何正确使用

    2023-07-28 12:36:16
  • Java如何利用return结束方法调用

    2022-05-20 19:58:35
  • SpringBoot分页查询功能的实现方法

    2023-07-14 02:22:21
  • Jersey Restful接口如何获取参数的问题

    2023-10-29 14:44:16
  • 一文告诉你为什么要重写hashCode()方法和equals()方法

    2021-09-05 07:05:55
  • Android自定义view实现圆形与半圆形菜单

    2023-10-18 19:08:53
  • 解决SpringBoot中使用@Async注解失效的问题

    2023-08-24 07:38:46
  • Android 基于IntentService的文件下载的示例代码

    2023-10-28 23:26:02
  • C#对JSON与对象的序列化与反序列化

    2022-09-07 12:05:08
  • Netty分布式pipeline管道传播outBound事件源码解析

    2022-10-17 23:43:06
  • C#中流的使用和分类

    2022-10-04 22:17:41
  • Java输出打印工具类封装的实例

    2022-06-18 10:02:27
  • asp之家 软件编程 m.aspxhome.com