mybatis
文章平均质量分 55
XingTree
这个作者很懒,什么都没留下…
展开
-
Configuration--objectFactory(三-3)
上一篇文章我们分析了标签typeAliases的解析,这篇文章我们接着分析下一个标签objectFactory的解析.mybatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成,默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化.我们可以在Configuration中看出,默认的对象工厂为:p原创 2017-07-31 21:45:20 · 268 阅读 · 0 评论 -
Configuration--mappers--XMLMapperBuilder.parse(三-8-2)
上一篇我们讲了Configuration的addMappers方法,可以看出,这个方法的最终目的,是将我们定义的mapper接口最终转化为MappedStatement,然后加入Configuration中,并且我们从上一篇文章中可以看出,即使我们是使用了class去配置mapper,也会去默认路径下加载xml文件.本篇我们来看看当mapper标签加载的是一个xml文件时使用的XMLMapperBu原创 2017-08-22 20:14:25 · 906 阅读 · 0 评论 -
Configuration--typeAliases(三-2)
上一篇文章我们分析了解析properties标签做的事情,发现最终会将properties中定义的值转化成Properties,设置到Configuration的variables属性中.这一篇我们来分析下一个标签typeAliases.typeAliases标签的作用就是给类定义别名,因为完整的类名需要包含包名,一般来说是非常长的,而我们会经常用到这些类,如果每次都写完整的包名,既麻烦又不易读,所原创 2017-07-27 23:07:31 · 507 阅读 · 0 评论 -
Configuration--properties(三-1)
上一篇文章我们看到了parseConfiguration方法,这个方法逐个解析configuration下面的子标签.本篇文章我们我们来看properties标签的作用.首先我们来看一下properties标签的作用,properties主要的作用就是动态的配置一些key-value的属性值,可以直接在properties的子标签property中配置,也可以从.properties文件中获取.<p原创 2017-07-27 22:17:16 · 372 阅读 · 0 评论 -
Configuration--mappers--addMappers(三-8-1)
本篇文章,我们来讲讲,当mapper标签加载的是一个类时,Configuration的addMappers方法的解析过程.mapper标签引用类的情况:<mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <package name="org.mybatis.builder"/></mappers>可以看出,一种是单独引用原创 2017-08-10 20:41:55 · 2683 阅读 · 1 评论 -
Configuration(三)
上一篇文章中,我们找到了新的切入点Configuration,现在就让我们来看看parser.parse()是怎么样把xml配置文件转化成Configuration的.我们先来看XMLConfigBuilder的构造方法: public XMLConfigBuilder(Reader reader, String environment, Properties props) { this(原创 2017-07-26 23:53:47 · 1534 阅读 · 0 评论 -
SqlSessionFactory(二)
从上一篇中,我们找到了我们的切入点SqlSessionFactory,那么现在我们就来会会它.(注:本文中出现的代码全是出自mybatis-3.2.6版本的源码)SqlSessionFactory在mybatis被定义为一个接口,在实际使用时,我们一般会通过SqlSessionFactoryBuilder的 build方法来构造一个SqlSessionFactory: // Reader是配置文件原创 2017-07-26 22:41:47 · 460 阅读 · 0 评论 -
小例子(一)
最近有点懒散,决定看看mybatis的源码,给自己找点学习的节奏,源码这种东西,需要找一个切入点去看,不然真的是无从下手,所以,我们先从一个小例子说起.首先我们需要一个mybatis非常重要的配置文件mybatis-config.xml(名字可以随便取):<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration P原创 2017-07-26 21:53:07 · 260 阅读 · 0 评论 -
Configuration--databaseIdProvider(三-6)
本篇文章我们来分析一下databaseIdProvider标签.mybatis可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的databaseId属性.mybatis会加载不带databaseId属性和带有匹配当前数据库databaseId属性的所有语句.如果同时找到带有databaseId和不带databaseId的相同语句,则后者会被舍弃.用法为:<databaseId原创 2017-08-03 22:45:15 · 1128 阅读 · 0 评论 -
Configuration--environments--transactionManager(三-5-2)
上一篇文章中我们分析了dataSource,本篇文章中我们来分析environments中的另一个配置transactionManager.首先我们来回忆一下解析environments标签时,解析transactionManager标签的代码:TransactionFactory txFactory = transactionManagerElement(child.evalNode("trans原创 2017-08-03 21:29:34 · 342 阅读 · 0 评论 -
Configuration--mappers(三-8)
本篇文章,我们来讲mybatis中最核心的配置mappers.先来看看mappers标签的用法:<mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper class="org.mybatis原创 2017-08-08 21:45:27 · 856 阅读 · 0 评论 -
Configuration--environments--dataSource(三-5-1)
上一篇文章中我们讲了environments,在environments中主要的配置就是dataSource和transactionManager.本篇文章我们就来讲讲dataSource.不知道大家还记不记得解析environments标签中的解析dataSource的代码: // 通过xml文件配置返回一个数据源工厂 DataSourceFactory dsFactory = dataSo原创 2017-08-02 20:27:37 · 524 阅读 · 0 评论 -
Configuration--environments(三-5)
上一篇文章中我们讲了settings,这一篇文章中,我们来讲一个比较重要的标签environments.顾名思义,environments就是配置mybatis的运行环境,包括事务(transactionManager)和数据源(dataSource).并且大家可以看到environments标签是复数形式,意味着environments下可以配置多个environment子标签,配置不同的环境,不原创 2017-08-01 20:43:05 · 1465 阅读 · 1 评论 -
Configuration--typeHandlers(三-7)
本篇文章我们继续来了解typeHandlers标签,这个标签的作用主要就是用于Java类型和数据库字段类型的相互转换.基本用法为: <typeHandlers> <typeHandler handler="" javaType="" jdbcType=""></typeHandler> <package name=""></package> </type原创 2017-08-07 21:49:45 · 482 阅读 · 0 评论 -
Configuration--settings(三-4)
上篇文章我们分析了typeAliases,这篇文章我们来分析一下settings,其实看到这个标签,就知道,这个标签,其实并没有什么特殊的东西,就全是一些配置信息.直接看代码settingsElement(root.evalNode(“settings”)): private void settingsElement(XNode context) throws Exception { if原创 2017-07-31 22:58:20 · 872 阅读 · 0 评论 -
SqlSession(四)
讲完了Configuration,我们继续回到我们的最初的SqlSession.我们最初的切入点是SqlSessionFactory,而SqlSessionFactory的作用就是为了open一个SqlSession,我们来回顾一下所有openSession方法最终会调用的两个方法: private SqlSession openSessionFromDataSource(ExecutorType原创 2017-08-22 21:28:42 · 509 阅读 · 2 评论