文档章节

mybaties源码解析(org.apache.ibatis.type)类型处理器

lackiechan
 lackiechan
发布于 2016/12/12 16:19
字数 340
阅读 16
收藏 0

此模块主要是实现MyBaties数据类型和jdbc中的数据类型的转换

一、TypeHandler接口作为参数转换的基础接口:

1、设定参数函数:

void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException;

2、通过ResultSet 解析类型  

T getResult(ResultSet rs, String columnName) throws SQLException;

T getResult(ResultSet rs, int columnIndex) throws SQLException;

3、通过CallableStatement解析类型

T getResult(CallableStatement cs, int columnIndex) throws SQLException;

 

二、BaseTypeHandler 是转换的基类,实现了TypeHandler<T>,增加setNonNullParameter()的模板函数和getNullableResult(ResultSet rs,String columnName)等模板函数,给子类具体实现。

三、异常类TypeException,继承org.apache.ibatis.exceptions.PersistenceException。

四、JdbcType 是个枚举类,针对jdbc的Types做转换,稍微包装一层,内部初始化了一个存储名为codeLookup 的key存储 TYPE_CODE,value存储JdbcType的内部静态变量map.

 

五、jdbc各种数据类型转换的具体子类。如SqlDateTypeHandler 

SqlDateTypeHandler  继承上面提到的基类BaseTypeHandler,实现父类的模板函数

setNonNullParameter,getNullableResult(ResultSet rs, String columnName),

getNullableResult(ResultSet rs, int columnIndex),

getNullableResult(CallableStatement cs, int columnIndex);

以上就是mybatis的type模块对jdbc标准的一个封装和优化。

还有一些封装,提供别名注解:Alias

对注解的知识理解可以参考链接http://www.cnphp6.com/archives/61315

建议详细了解jdbc的知识。框架就是对基础知识的更高程度的封装

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
lackiechan
粉丝 1
博文 8
码字总数 2456
作品 0
广州
私信 提问
mybaties源码解析(org.apache.ibatis.session Configuration 模块

Configuration 是用户对mybaties配置维护的类,通过io模块从xml配置文件读取配置文件。 集成的api有创建执行器,结果处理器、语句处理器、参数处理器和基础属性配置,还有多个静态成员变量维护...

lackiechan
2016/12/13
19
0
Mybaties报错Error querying database

Mybaties我们经常用到动态SQL,如下我们利用动态去做判断,这样写当然没问题,但是当我们不是去判断orgCode(本文中orgCode一直为String类型)是否为空而是判断orgCode是否是一个值的时候该怎...

王子城
07/18
0
0
Mybatis 类型转换源码分析

本文将从以下几个方面进行介绍 相关文章 前言 类型处理器 类型注册器 别名注册器 相关文章 Mybatis 解析配置文件的源码解析 前言 JDBC 提供的数据类型和Java的数据类型并不是完全对应的,当 ...

tsmyk0715
11/04
0
0
有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord

有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord? 在使用JFinal中时,如果业务是和计算相关的时候,弱对象类型的Model就有些不合适了,一个好的思路是使用类似MyBaties的方式,...

酋长思密达
2013/12/06
3K
10
mybaties源码解析(org.apache.ibatis.session)session模块

一、SqlSession :常用接口SqlSession。实现java.io.Closeable。 主要集成了 1、查询类函数 selectXXX 2、插入类函数insertXXX 3、删除类函数delete 4、事务提交commit 5、回滚rollback 6、批...

lackiechan
2016/12/12
11
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 这就是不要女朋友的理由

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @狄安娜的猫 :分享丁家鑫的单曲《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 手机党少年们想听歌,请...

小小编辑
19分钟前
79
5
CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
4
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
5
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部