sqlsessionfactorybuilder Mybatis源码(01.)

  
  

可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的.SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建。一是可以通过XML配置文件的方式来构建SqlSessionFactory,二是可以通过Java API的方式来构建。但不管通过什么方式都有一个配置贯穿始终,各种配置正是通过配置实例来完成实现。

     
 <代码>公共类SqlSessionFactoryBuilder {//(1)从配置文件获取SqlSessionFactory
  公共SqlSessionFactory构建(读者读者){
  返回构建(读者,零,零);
  }//(2)从配置文件获取SqlSessionFactory,并设定依赖哪种环境参数(开发环境/生产环境)
  公共SqlSessionFactory构建(读者读者,字符串环境){
  返回构建(读者、环境、空);
  }//(3)从配置文件获取SqlSessionFactory,并设定依赖哪些配置参数(属性配置文件,那些属性可以用$ {propName}语法形式多次用在配置文件中)
  公共SqlSessionFactory构建(读者读者,属性属性){
  返回构建(读者,null,属性);
  }//通用构建函数——:(1),(2),(3)构建函数内部实现均调用的此函数
  环境公共SqlSessionFactory构建(读者读者,字符串,属性属性){
  尝试{//委托XMLConfigBuilder来解析xml文件,并返回一个配置对象,SqlSessionFactory的生成依赖于此配置对象
  XMLConfigBuilder解析器=new XMLConfigBuilder(读者、环境、属性);
  返回构建(parser.parse ());
  }捕捉(异常e) {
  把ExceptionFactory。wrapException(“构建SqlSession错误。”,e);
  最后}{
  .reset ErrorContext.instance () ();
  尝试{
  reader.close ();
  }捕捉(IOException e) {//故意忽视。喜欢以前的错误。
  }
  }
  }//(4)从数据流中获取SqlSessionFactory
  公共SqlSessionFactory构建(InputStream InputStream) {
  返回构建(inputStream,零,零);
  }//(5)从数据流中获取SqlSessionFactory,并设定依赖哪种环境参数(开发环境/生产环境)
  公共SqlSessionFactory构建(InputStream InputStream,字符串环境){
  返回构建(inputStream、环境、空);
  }//(6)从数据流中获取SqlSessionFactory,并设定依赖哪些配置参数(属性配置文件,那些属性可以用$ {propName}语法形式多次用在配置文件中)
  公共SqlSessionFactory构建(InputStream InputStream,属性属性){
  返回构建(inputStream, null,属性);
  }//通用构建函数二:(4),(5),(6)构建函数内部实现均调用此函数
  公共SqlSessionFactory构建(InputStream InputStream,字符串环境属性属性){
  尝试{
  XMLConfigBuilder解析器=new XMLConfigBuilder (inputStream、环境、属性);
  返回构建(parser.parse ());
  }捕捉(异常e) {
  把ExceptionFactory。wrapException(“构建SqlSession错误。”,e);
  最后}{
  .reset ErrorContext.instance () ();
  尝试{
  inputStream.close ();
  }捕捉(IOException e) {//故意忽视。喜欢以前的错误。
  }
  }
  }//通用构建函数一和通用构建函数二最终调用此函数,将XMLConfigBuilder产生的配置作为参数,并返回DefaultSqlSessionFactory对象
  公共SqlSessionFactory构建(配置配置){
  返回新DefaultSqlSessionFactory(配置);
  }
  
  } 

sqlsessionfactorybuilder Mybatis源码(01.)