可以说每个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.)