Mybatis源码[01.SqlSessionFactoryBuilder]
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的。SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建。一是可以通过XM
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
中国2g网络技术
嘉定区质量网络技术供应
软件开发行业总产值
asp是商业资源数据库吗
天津软件开发服务郑重承诺
南通软件开发平台
数据库怎么取消日期
思科网络技术学院捐款排名
头条app 软件开发
mysql连接外部数据库
把自己电脑做服务器吗
数据库窗口学生信息表
象山计算机软件开发周期
服务器管理你没有权限
ui在线制作带数据库
东莞贞元网络技术有限公司
转软件开发专业考什么资格证书
清远市公共信息网络安全监察
网络安全标语和口号小学生
北京项目软件开发费用
易语言外部数据库怎么用
初中生手机网络安全教育
深圳天祥大厦 网络技术
中国房价数据库
中专网络技术工程教学
全国网络安全和信息
宁波商城软件开发外包公司
信恩网络技术有限公司
中国电科网络安全宣传周知识问答
笔记本续航排行榜2021数据库