Mybatis之reflection包源代码解析(一)
摘要:一、序言 Mybatis作为ORM,实现了对象与关系数据库间的映射。Mybatis中的映射包含两个方面: 1.将对象中的值(parameterType所指定的对象)映射到具体的sql中,例如: insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#...
阅读全文
posted @
2013-09-18 11:00
孙振超
阅读(7261)
推荐(0)
Mybatis源代码分析之parsing包
摘要:parsing,从字面上理解就是编译解析的意思,那么这个包中的内容就应该和mybatis配置文件的编译解析有关系。本文首先会按照引用层次来分别介绍这个包中各个类的作用,而后再用实际的例子解释它们是如何组合到一起去解决了什么样的问题。一、类和接口介绍1.TokenHandlerpublic interface TokenHandler { String handleToken(String content);}这个接口中只有一个函数,就是对字符串进行处理。2.GenericTokenParser从这个类的名字看到,这个类是对常用Token进行parser的类,我们首先了解这个类的属性和构造函数.
阅读全文
posted @
2013-06-28 16:15
孙振超
阅读(12470)
推荐(1)
Mybatis源代码分析之包间依赖介绍(一)
摘要:通常而言,作为一个系统中的类、接口和注解,或多或少都会被该系统中其他的类、接口或者注解所引用,相互间存在着被我们称为继承、实现、组合、关联、依赖等关系。但是有时出于系统版本的迭代升级,一些类、接口和注解慢慢的不再被系统中的其他类所调用;或者是其提供的功能相对独立,与系统中其他类、接口和注解没有关系。一个正式商用的系统中的类文件没有上万也有数千个,但如何才能发现这些类间的关系?难道要一个一个查看吗?答案当然是不!这里要提到 JDepend 这个开源的工具,如果对这个工具没有不够熟悉,可以查看:http://blog.csdn.net/zhengsj/article/details/4148117
阅读全文
posted @
2013-06-14 17:00
孙振超
阅读(2348)
推荐(0)
mybatis源代码分析之binding包
摘要:在使用ibatis执行数据库访问时,会调用形如getSqlMapClientTemplate().queryForObject("getCityByCityId", cityId);这样的代码。这样的形式要求调用方选择需要使用的函数(queryForObject、queryForList、update),还需要告诉这个函数具体执行哪一个statement(上文中是“getCityByCityId”),在这个过程中如果有一个地方选择错误或者拼写错误,不仅没有办法达到自己的期望值,可能还会出现异常,并且这种错误只有在运行时才能够发现。mybatis对此进行了改进,只要先声明一个
阅读全文
posted @
2013-05-13 15:39
孙振超
阅读(6124)
推荐(0)
Mybatis源代码分析之metadata包
摘要:数据库中我们最常用到的元素就是database、table、column。Mybatis作为强大的ORM框架,当中也包含了获取处理这些元素的代码,本篇将介绍相关的内容。 一、Catalog & Schema 在介绍具体的代码实现之前,我们需要先了解两个后面会用到的两个名词:Catalog & Schema。 按照SQL标准的解释,在SQL环境下Catalog和...
阅读全文
posted @
2013-04-16 21:17
孙振超
阅读(4766)
推荐(0)
Mybatis源代码分析之别名
摘要:在我们平时写sql时为了简化书写,方便理解记忆会经常用到别名,比如一个表名很长可以直接取别名a就可以代替,还有比如你查询出来的结果有的字段很长不是通俗叫法,我们可以取你想要的字段名。别名的好处是显而易见的,mybatis把这个好处也扩展到了类上。官网(http://mybatis.github.io/mybatis-3/configuration.html#typeAliases)有云:A type alias is simply a shorter name for a Java type. It's only relevant to the XML configuration an
阅读全文
posted @
2013-04-09 17:20
孙振超
阅读(10018)
推荐(0)
Mybatis源代码分析之类型转换
摘要:ORM框架最重要功能是将面向对象方法中的对象和关系型数据库中的表关联了起来,在关联过程中就必然涉及到对象中的数据类型和数据库中的表字段类型的转换,Mybatis中的org.apache.ibatis.type包主要就是实现这个功能。一、org.apache.ibatis.type的基础类在mybatis的官网中(http://mybatis.github.io/mybatis-3/configuration.html#typeHandlers)关于类型转换有如下的描述Whenever MyBatis sets a parameter on a PreparedStatement or ret.
阅读全文
posted @
2013-04-09 10:09
孙振超
阅读(19936)
推荐(0)