/**
构造器,根据配置或者代码生成SqlSessionFactory,采用分布构建的Builder模式
/*
public class SqlSessionFactoryBuilder {
 /**
    传入用于读取字符流的类。
/*
public SqlSessionFactory build(Reader reader) {
return build(reader, null, null);
}
 /**
    传入用于读取字符流的类和环境配置(不同环境数据库各种连接配置不一样)
/*
public SqlSessionFactory build(Reader reader, String environment) {
return build(reader, environment, null);
}
  
/**
    传入用于读取字符流的类和环境配置(不同环境数据库各种连接配置不一样)
/*
public SqlSessionFactory build(Reader reader, Properties properties)
{ return build(reader, null, properties);
} /**
 传入用于读取字符流的类和配置文件
/*
public SqlSessionFactory build(Reader reader, Properties properties) {
return build(reader, null, properties);
}
/* 构造
SqlSessionFactory 具体实现(传入字符流)
/*
public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);
return build(parser.parse());
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
reader.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
/**
传入字节流
/*
public SqlSessionFactory build(InputStream inputStream) {
return build(inputStream, null, null);
}
/** 
  传入字节流和环境配置
/*
public SqlSessionFactory build(InputStream inputStream, String environment) {
return build(inputStream, environment, null);
}
/** 
  传入字节流和配置文件
/*
public SqlSessionFactory build(InputStream inputStream, Properties properties) {
return build(inputStream, null, properties);
} /* 构造
SqlSessionFactory 具体实现(传入字节流)
/*
public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);
return build(parser.parse());
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
inputStream.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
/**
核心,根据配置配置生成SqlSessionFactory 以上实现都是读取配置转换成配置对象在调用此方法。
/* 
public SqlSessionFactory build(Configuration config) {
return new DefaultSqlSessionFactory(config);
}

mybatis3源码阅读之SqlSessionFactoryBuilder的更多相关文章

  1. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  2. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  3. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  4. 【原】AFNetworking源码阅读(六)

    [原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...

  5. 【原】AFNetworking源码阅读(五)

    [原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...

  6. 【原】AFNetworking源码阅读(四)

    [原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...

  7. 【原】AFNetworking源码阅读(三)

    [原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...

  8. 【原】AFNetworking源码阅读(二)

    [原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...

  9. 【原】AFNetworking源码阅读(一)

    [原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...

随机推荐

  1. Oracle SQL性能优化总结

    1. SQL语句执行步骤 语法分析> 语义分析> 视图转换 >表达式转换> 选择优化器 >选择连接方式 >选择连接顺序 >选择数据的搜索路径 >运行“执 ...

  2. mybatis:SQL拦截器

    打印执行的SQL语句 import java.sql.Connection; import java.text.DateFormat; import java.util.Date; import ja ...

  3. TableView+Button

    local MainScene = class("MainScene", cc.load("mvc").ViewBase) function MainScene ...

  4. tensorflow--交叉熵

    学而不思则罔,思而不学则怠. 最近在看<TensorFlow 实战Google深度学习框架第二版>这本书.从头开始学习深度学习,对于细节方面进行探究.相当于重新拾起来这门”手艺“. 这篇随 ...

  5. 基于tkinter的GUI编程

    tkinter:tkinter是绑定了Python的TKGUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl解释器实现的,它是Python标准库的一部分,所以使用它 ...

  6. python3 切片

    一.切片的目的:获取多个元素 能够进行切片的对象有:字符串.列表.元组 语法:  object[start_index:end_index:step]     以下是创建一个列表 a = [0,1,2 ...

  7. 集腋成裘-13-git使用-02进阶篇

    上一篇我们简单介绍了如何安装和使用git,本次将简单介绍如何创建分支.处理冲突.提交与回滚 创建和合并分支是Git的一大特色. 使用场景:当有一个新功能要开发,但是又没有确定上线时间,不能合并到主干上 ...

  8. .net基础学java系列(七)赶鸭子上架看项目代码

    项目用到的技术栈 序列化 com.alibaba.fastjson.JSON; https://github.com/alibaba/fastjson/wiki/Quick-Start-CN 日志 l ...

  9. ansible字符串处理(一)

    [root@node-1 test]# ansible-playbook hba_card_check.yml PLAY [compute[0]] ************************** ...

  10. C++ STL容器总结

    1.    STL 容器 1.    按种类划分 顺序容器( sequence containers):是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集.顺序性容器中的每个元素均有固定的位 ...