文档章节

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

lackiechan
 lackiechan
发布于 2016/12/12 16:19
字数 340
阅读 15
收藏 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
有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord

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

萝卜哥
2013/12/06
2.7K
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
Java注解(Annotation)详解

Java注解(Annotation)详解 1.Annotation的概念 An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may......

幻海流心
05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解析高可用分布式键值存储 etcd 的原理

这篇文章将会介绍 etcd 的实现原理,其中包括 Raft 协议、存储两大模块,在最后我们也会简单介绍 etcd 一些具体应用场景。 etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整...

小刀爱编程
15分钟前
1
0
在ubuntun虚拟机里安装goLang语言编程环境

Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 北京时间201...

JerryWang_SAP
16分钟前
5
0
c++builder导出函数export function DLL

__stdcall __export 即可,如: ulong __stdcall __export od_disasm(char *src,ulong srcsize,ulong srcip, t_disasm *disasm,int disasmmode){ return Disasm(src,srcsiz......

simpower
17分钟前
2
0
KDC服务安装及配置

阿伦哥-
20分钟前
1
0
mybatis-plus公共字段操作以及springboot2整合mybatis-plus

1、公共实体 对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性 所有新增公共字段加注解 并指定 @TableField(value = "corp_code",fi...

glen_xu
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部