mybaties源码解析(org.apache.ibatis.type)类型处理器
mybaties源码解析(org.apache.ibatis.type)类型处理器
lackiechan 发表于1年前
mybaties源码解析(org.apache.ibatis.type)类型处理器
  • 发表于 1年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

此模块主要是实现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的知识。框架就是对基础知识的更高程度的封装

 

 

 

 

标签: MyBatis
共有 人打赏支持
粉丝 2
博文 8
码字总数 2456
×
lackiechan
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: