Mybatis源码[01.SqlSessionFactoryBuilder]
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的。SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建。一是可以通过XM
千家信息网最后更新 2024年11月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安全错误
数据库的锁怎样保障安全
重庆酉阳食材配送软件开发
hive创建数据库表
人工智能强排软件开发
戴尔服务器上门维修价格表
中国矿大网络安全研究生学费
元素排版软件开发
查看服务器配置的命令
srs服务器管理
网络安全技术教程pdf
方舟服务器管理员怎么登录
数据库可视化技术
阿里云的数据库名称在哪里看
机关网络安全设备预算
湖北应用软件开发哪家可靠
数据库配置文件怎么注释掉
测服务器功能
信息技术选修1网络技术应用
梦幻藏宝阁手机版怎么换服务器
服务器管理共享资源设备
网络技术之外
天津曙光服务器维修系统
您访问网站未接入网络安全审计
越秀定制软件开发
河南惠普服务器虚拟化服务器
简易网络技术咨询服务合同
网络技术 贴吧
属于数据库访问技术的是
网络安全暑期实践报告
电商群控软件开发
软件开发中的开闭原则