Mybatis源码[01.SqlSessionFactoryBuilder]
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的。SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建。一是可以通过XM
千家信息网最后更新 2025年11月07日Mybatis源码[01.SqlSessionFactoryBuilder]
可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的。SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建。一是可以通过XML配置文件的方式来构建SqlSessionFactory,二是可以通过Java API的方式来构建。但不管通过什么方式都有一个Configuration贯穿始终,各种配置正是通过Configuration实例来完成实现。
public class SqlSessionFactoryBuilder { // (1) 从配置文件获取SqlSessionFactory public SqlSessionFactory build(Reader reader) { return build(reader, null, null); } // (2) 从配置文件获取SqlSessionFactory,并设定依赖哪种环境参数(开发环境/生产环境) public SqlSessionFactory build(Reader reader, String environment) { return build(reader, environment, null); } // (3) 从配置文件获取SqlSessionFactory,并设定依赖哪些配置参数(属性配置文件,那些属性可以用${propName}语法形式多次用在配置文件中) public SqlSessionFactory build(Reader reader, Properties properties) { return build(reader, null, properties); } // 通用构建函数-:(1)、(2)、(3)构建函数内部实现均调用的此函数 public SqlSessionFactory build(Reader reader, String environment, Properties properties) { try { //委托XMLConfigBuilder来解析xml文件,并返回一个Configuration对象,SqlSessionFactory的生成依赖于此Configuration对象 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. } } } // (4) 从数据流中获取SqlSessionFactory public SqlSessionFactory build(InputStream inputStream) { return build(inputStream, null, null); } // (5) 从数据流中获取SqlSessionFactory,并设定依赖哪种环境参数(开发环境/生产环境) public SqlSessionFactory build(InputStream inputStream, String environment) { return build(inputStream, environment, null); } // (6) 从数据流中获取SqlSessionFactory,并设定依赖哪些配置参数(属性配置文件,那些属性可以用${propName}语法形式多次用在配置文件中) public SqlSessionFactory build(InputStream inputStream, Properties properties) { return build(inputStream, null, properties); } // 通用构建函数二:(4)、(5)、(6)构建函数内部实现均调用此函数 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. } } } // 通用构建函数一和通用构建函数二最终调用此函数,将XMLConfigBuilder 产生的Configuration作为参数,并返回DefaultSqlSessionFactory对象 public SqlSessionFactory build(Configuration config) { return new DefaultSqlSessionFactory(config); }}
配置
函数
文件
环境
参数
属性
可以通过
实例
对象
数据
数据流
方式
形式
语法
开发
生产
委托
生成
源码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
四川电商软件开发靠谱吗
软件开发中的功能如何计费
策略设置代理服务器
数据库部署在存储服务器上
数据库应用技术测试题
长宁区新时代软件开发参考价格
校园网络安全体系建设
互联网科技头像
部队网络安全心得
国家网络安全宣传周是九月的
IT包括软件开发吗
帆软抓数据库信息
码软件开发
挂接服务器
某网站的用户数据库泄露影响
你无法在安全的服务器
计算机三级网络技术40套
游戏公司的数据库安全级别
手机远程下载数据库用什么技术
郑州中专学校软件开发好的
电驴子服务器
文件夹上传下载数据库
张博计算机网络技术与应用
我的世界微软版需要买服务器嘛
数据库书店
小振服务器
智能辅助服务器协议书
软件开发有什么特征
网络安全培训学校收费
增强云服务器安全