文档章节

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

lackiechan
 lackiechan
发布于 2016/12/12 16:19
字数 340
阅读 12
收藏 0
点赞 0
评论 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 ⋅ 0

有没有人在Jfinal中集成MyBaties,用MyBaties代替ActiveRecord

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

萝卜哥 ⋅ 2013/12/06 ⋅ 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 ⋅ 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

org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map

由于公司操作数据库的方式使用mybatis,由于个人以前没有用过,才学不久,写好了mapper.xml编译的时候,居然报了这个错误: 其实,使用MyBaties在编写sql配置文件时,都会遇到的一个小问题,...

双月通天 ⋅ 2016/09/21 ⋅ 0

ButterKnife原理分析(二)注解的处理

上一篇我们讲解了ButterKnife的设计思想,理解了ButterKnife绑定相关源码的实现逻辑。但是它是怎么通过注解的方式生成的那些逻辑代码,这才是最让我们迫切想知道,因此在这篇,我将说说Butte...

Ihesong ⋅ 2017/12/31 ⋅ 0

mybaties 为什么读取orace lONGL类型字段的时候,用getclob去读取?

无效的列类型: getCLOB not implemented for class oracle.jdbc.driver.T4CLongAccessor 跪求解决mybaties读取oracel LONG 类型字段的问题...

fanfan110 ⋅ 2017/09/25 ⋅ 0

【原创】遨游springmvc之HandlerExceptionResolver

1.前言 在我们的程序中,很多时候会碰到对异常的处理,我们也许会定义一些自己特殊业务的异常,在发生错误的时候会抛出异常,在springmvc的实际应用中,我们经常需要返回异常的信息以及错误代...

开源中国首席脑科主任 ⋅ 2016/08/16 ⋅ 14

软件安全加解密,源码混淆控件,.NET源码保护控件VMProtect

VMProtect是一款全新的软件保护工具。与其它大部分的保护程序不同,VMProtect可修改程序的源代码。VMProtect可将被保护文件中的部分代码转化到在虚拟机(以下称作VM)上运行的程序(以下称作...

kongjianxuanxing ⋅ 2014/04/14 ⋅ 0

数据库中间件 MyCAT源码分析:【单库单表】插入【推荐阅读】

🙂🙂🙂关注微信公众号:【芋艿的后端小屋】有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码...

芋道源码掘金Java群217878901 ⋅ 2017/08/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

线程池

一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。 二、线程池的体系结构: java.util.concurrent.Executor : 负责线程的使用...

stars永恒 ⋅ 18分钟前 ⋅ 0

你值5K还是15K?实战案例,测测你的分析功力

本文源自陈老师遇到的真实案例。 老板说:“我们今年准备参加展会,做一年。以前我没参加过,没关系,这里有一份展会数据,你回去分析下哪些有价值,后边组织的时候有个指导”。现在你收到任...

加米谷大数据 ⋅ 20分钟前 ⋅ 0

中文转英文功能

package com.sysware.task.util;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.for......

AK灬 ⋅ 21分钟前 ⋅ 0

JNI Java层类关联C/C++层的类

Android开发时,因为要实现某某功能,需要集成算法公司的算法库(so库),这就需要自己编写JNI。 通常这些库提供的接口可以概况成1、初始化 2、算法处理 3、释放 4、打印版本号 初始化后会返...

国仔饼 ⋅ 24分钟前 ⋅ 0

maven下载jar包改为阿里云的maven库

一:修改maven安装路径中conf文件夹下的setting.xml文件 <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/......

夜醒者 ⋅ 25分钟前 ⋅ 0

电商用户行为分析大数据平台相关系列10-基础数据结构分析

电商用户行为分析大数据平台相关系列1-环境介绍 电商用户行为分析大数据平台相关系列2-HADOOP环境搭建 电商用户行为分析大数据平台相关系列3-HIVE安装 电商用户行为分析大数据平台相关系列4...

xiaomin0322 ⋅ 26分钟前 ⋅ 0

使用readLine()方法遇到的坑

下午玩 TCP/IP 的 Socket 通信时,使用 BufferedReader 的 readLine() 遇到了一个坑,现在终于解决了,特此记录下来。 程序很简单,客户段从控制台读取用户输入,然后发送至服务器端,主要代...

孟飞阳 ⋅ 26分钟前 ⋅ 0

基于Hadoop集群的Hive安装配置(Derby数据库)

Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据,提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行(具体的Hive架构大家自行搜索)。接下来主要讲下Hadoop集群下...

海岸线的曙光 ⋅ 27分钟前 ⋅ 0

CoreOS裸机iso安装和相关配置

裸机通过iso安装CoreOS,个人趟了很多坑,以下就是完整的从零开始部署和配置的过程,希望对大家有用。 一、安装CoreOS到硬盘 1. 准备Live iso镜像,制作好usb启动盘 Live iso下载地址 2. 搭建...

ykbj ⋅ 32分钟前 ⋅ 0

jquery控制表格锁列(转)

表格已经完成后新加的需求,要实现锁表格的第一列。很多带这种效果的都是js封装的框架或者具体某种框架的组件,不适用解决当前问题。作为后端开发又实在不熟样式,搜到了一个可以用的,虽然样...

刘昌鑫 ⋅ 34分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部