自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 数据库事务和事务隔离级别

数据库事务

2017-05-12 00:41:34 459

原创 Effective Java 创建和销毁对象(1~7)

Effective Java

2017-05-10 20:52:30 503

原创 Java自定义注解

注解概念

2017-05-08 00:04:02 288

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除