- 博客(20)
- 收藏
- 关注
原创 SqlSession(四)
讲完了Configuration,我们继续回到我们的最初的SqlSession.我们最初的切入点是SqlSessionFactory,而SqlSessionFactory的作用就是为了open一个SqlSession,我们来回顾一下所有openSession方法最终会调用的两个方法: private SqlSession openSessionFromDataSource(ExecutorType
2017-08-22 21:28:42 543 2
原创 Configuration--mappers--XMLMapperBuilder.parse(三-8-2)
上一篇我们讲了Configuration的addMappers方法,可以看出,这个方法的最终目的,是将我们定义的mapper接口最终转化为MappedStatement,然后加入Configuration中,并且我们从上一篇文章中可以看出,即使我们是使用了class去配置mapper,也会去默认路径下加载xml文件.本篇我们来看看当mapper标签加载的是一个xml文件时使用的XMLMapperBu
2017-08-22 20:14:25 929
原创 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 2781 1
原创 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 889
原创 Configuration--typeHandlers(三-7)
本篇文章我们继续来了解typeHandlers标签,这个标签的作用主要就是用于Java类型和数据库字段类型的相互转换.基本用法为: <typeHandlers> <typeHandler handler="" javaType="" jdbcType=""></typeHandler> <package name=""></package> </type
2017-08-07 21:49:45 519
原创 Configuration--databaseIdProvider(三-6)
本篇文章我们来分析一下databaseIdProvider标签.mybatis可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的databaseId属性.mybatis会加载不带databaseId属性和带有匹配当前数据库databaseId属性的所有语句.如果同时找到带有databaseId和不带databaseId的相同语句,则后者会被舍弃.用法为:<databaseId
2017-08-03 22:45:15 1172
原创 Configuration--environments--transactionManager(三-5-2)
上一篇文章中我们分析了dataSource,本篇文章中我们来分析environments中的另一个配置transactionManager.首先我们来回忆一下解析environments标签时,解析transactionManager标签的代码:TransactionFactory txFactory = transactionManagerElement(child.evalNode("trans
2017-08-03 21:29:34 370
原创 Configuration--environments--dataSource(三-5-1)
上一篇文章中我们讲了environments,在environments中主要的配置就是dataSource和transactionManager.本篇文章我们就来讲讲dataSource.不知道大家还记不记得解析environments标签中的解析dataSource的代码: // 通过xml文件配置返回一个数据源工厂 DataSourceFactory dsFactory = dataSo
2017-08-02 20:27:37 545
原创 Configuration--environments(三-5)
上一篇文章中我们讲了settings,这一篇文章中,我们来讲一个比较重要的标签environments.顾名思义,environments就是配置mybatis的运行环境,包括事务(transactionManager)和数据源(dataSource).并且大家可以看到environments标签是复数形式,意味着environments下可以配置多个environment子标签,配置不同的环境,不
2017-08-01 20:43:05 1494 1
原创 Configuration--settings(三-4)
上篇文章我们分析了typeAliases,这篇文章我们来分析一下settings,其实看到这个标签,就知道,这个标签,其实并没有什么特殊的东西,就全是一些配置信息.直接看代码settingsElement(root.evalNode(“settings”)): private void settingsElement(XNode context) throws Exception { if
2017-07-31 22:58:20 914
原创 Configuration--objectFactory(三-3)
上一篇文章我们分析了标签typeAliases的解析,这篇文章我们接着分析下一个标签objectFactory的解析.mybatis每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成,默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化.我们可以在Configuration中看出,默认的对象工厂为:p
2017-07-31 21:45:20 287
原创 Configuration--typeAliases(三-2)
上一篇文章我们分析了解析properties标签做的事情,发现最终会将properties中定义的值转化成Properties,设置到Configuration的variables属性中.这一篇我们来分析下一个标签typeAliases.typeAliases标签的作用就是给类定义别名,因为完整的类名需要包含包名,一般来说是非常长的,而我们会经常用到这些类,如果每次都写完整的包名,既麻烦又不易读,所
2017-07-27 23:07:31 544
原创 Configuration--properties(三-1)
上一篇文章我们看到了parseConfiguration方法,这个方法逐个解析configuration下面的子标签.本篇文章我们我们来看properties标签的作用.首先我们来看一下properties标签的作用,properties主要的作用就是动态的配置一些key-value的属性值,可以直接在properties的子标签property中配置,也可以从.properties文件中获取.<p
2017-07-27 22:17:16 399
原创 Configuration(三)
上一篇文章中,我们找到了新的切入点Configuration,现在就让我们来看看parser.parse()是怎么样把xml配置文件转化成Configuration的.我们先来看XMLConfigBuilder的构造方法: public XMLConfigBuilder(Reader reader, String environment, Properties props) { this(
2017-07-26 23:53:47 1563
原创 SqlSessionFactory(二)
从上一篇中,我们找到了我们的切入点SqlSessionFactory,那么现在我们就来会会它.(注:本文中出现的代码全是出自mybatis-3.2.6版本的源码)SqlSessionFactory在mybatis被定义为一个接口,在实际使用时,我们一般会通过SqlSessionFactoryBuilder的 build方法来构造一个SqlSessionFactory: // Reader是配置文件
2017-07-26 22:41:47 488
原创 小例子(一)
最近有点懒散,决定看看mybatis的源码,给自己找点学习的节奏,源码这种东西,需要找一个切入点去看,不然真的是无从下手,所以,我们先从一个小例子说起.首先我们需要一个mybatis非常重要的配置文件mybatis-config.xml(名字可以随便取):<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration P
2017-07-26 21:53:07 285
原创 ArrayList(一)
1. 概述ArrayList是平常工作中非常常用的集合类之一,说起这个类,我就想起了我大学时期找实习的时候,经常被问起ArrayList与其他集合类的区别,我总是会像背书一样的说,ArrayList是基于数组,可添加重复元素,有序的,随机查找快但删除慢,那今天我们就从源码的角度分析一下,ArrayList为什么会具有这些特点.2.源码分析(JDK1.8)注:下面出现在代码全都出自JDK1.8的Arr
2017-07-25 21:50:08 493
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人