当前位置: 首页 > news >正文

苹果cms网站广告怎么做/微信营销号

苹果cms网站广告怎么做,微信营销号,网站建设 网站内容 采集,做网站域名需哪些MyBatis源码阅读-总索引 文章目录前言继承体系源码分析私有属性构造器openSession()获取SqlSession前言 SqlSessionFactory 用于根据配置文件生成的配置类Configuration创建SqlSession。 继承体系 可以看到SqlSessionFactory接口有两个实现类DefaultSqlSessionFactory和SqlSe…

MyBatis源码阅读-总索引

文章目录

  • 前言
  • 继承体系
  • 源码分析
    • 私有属性
    • 构造器
    • openSession()获取SqlSession

前言

SqlSessionFactory 用于根据配置文件生成的配置类Configuration创建SqlSession。

继承体系

在这里插入图片描述
可以看到SqlSessionFactory接口有两个实现类DefaultSqlSessionFactory和SqlSessionManager,SqlSessionManager还实现了SqlSession接口,SqlSessionFactoryBuilder中是使用DefaultSqlSessionFactory来创建SqlSessionFactory,本文章只介绍DefaultSqlSessionFactory。

	//SqlSessionFactoryBuilderpublic SqlSessionFactory build(Configuration config) {return new DefaultSqlSessionFactory(config);}

源码分析

私有属性

只有一个私有属性Configuration对象,其由由MyBatis配置文件转化而成。

 private final Configuration configuration;

构造器

只有一个构造器,参数为Configuration类对象

 public DefaultSqlSessionFactory(Configuration configuration) {this.configuration = configuration;}

openSession()获取SqlSession

可以看到openSession主要要以下几个入参

  • autoCommit :
    true:自动提交,无需再显示调用sqlSession.commit();进行提交。
    false:不自动提交,需再显示调用sqlSession.commit();进行提交,否则更新删除插入操作无效。
  • ExecutorType
    配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。
  • TransactionIsolationLevel:
  • TransactionIsolationLevel事务相关的隔离等级,用于解决脏读,不可重复读等并发问题,后面会有文章进行相关介绍。
    READ_COMMITTED:读提交
    READ_UNCOMMITTED: 读未提交
    REPEATABLE_READ:可重复读
    SERIALIZABLE:可序列化

√: 可能出现 ×: 不会出现
在这里插入图片描述

    public SqlSession openSession() {return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, false);}public SqlSession openSession(boolean autoCommit) {return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, autoCommit);}public SqlSession openSession(ExecutorType execType) {return this.openSessionFromDataSource(execType, (TransactionIsolationLevel)null, false);}public SqlSession openSession(TransactionIsolationLevel level) {return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), level, false);}public SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level) {return this.openSessionFromDataSource(execType, level, false);}public SqlSession openSession(ExecutorType execType, boolean autoCommit) {return this.openSessionFromDataSource(execType, (TransactionIsolationLevel)null, autoCommit);}public SqlSession openSession(Connection connection) {return this.openSessionFromConnection(this.configuration.getDefaultExecutorType(), connection);}public SqlSession openSession(ExecutorType execType, Connection connection) {return this.openSessionFromConnection(execType, connection);}

上面的openSession都是通过调用openSessionFromDataSource来创建SqlSession。
最终是根据相关配置使用DefaultSqlSession类来创建SqlSession对象。
var8 = new DefaultSqlSession(this.configuration, executor, autoCommit);

private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {Transaction tx = null;DefaultSqlSession var8;try {Environment environment = this.configuration.getEnvironment();TransactionFactory transactionFactory = this.getTransactionFactoryFromEnvironment(environment);tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit);Executor executor = this.configuration.newExecutor(tx, execType);var8 = new DefaultSqlSession(this.configuration, executor, autoCommit);} catch (Exception var12) {this.closeTransaction(tx);throw ExceptionFactory.wrapException("Error opening session.  Cause: " + var12, var12);} finally {ErrorContext.instance().reset();}return var8;}//Connection  : java.sql.Connectionprivate SqlSession openSessionFromConnection(ExecutorType execType, Connection connection) {DefaultSqlSession var8;try {boolean autoCommit;try {autoCommit = connection.getAutoCommit();} catch (SQLException var13) {autoCommit = true;}Environment environment = this.configuration.getEnvironment();TransactionFactory transactionFactory = this.getTransactionFactoryFromEnvironment(environment);Transaction tx = transactionFactory.newTransaction(connection);Executor executor = this.configuration.newExecutor(tx, execType);var8 = new DefaultSqlSession(this.configuration, executor, autoCommit);} catch (Exception var14) {throw ExceptionFactory.wrapException("Error opening session.  Cause: " + var14, var14);} finally {ErrorContext.instance().reset();}return var8;}

获取TransactionFactory

    private TransactionFactory getTransactionFactoryFromEnvironment(Environment environment) {return (TransactionFactory)(environment != null && environment.getTransactionFactory() != null ? environment.getTransactionFactory() : new ManagedTransactionFactory());}
http://www.jmfq.cn/news/5030749.html

相关文章:

  • web前端项目案例/百度seo快速提升排名
  • 网站在线支付接口/百度关键词推广可以自己做吗
  • 宇锋网站建设/武汉seo服务多少钱
  • 整站优化关键词推广/河南seo技术教程
  • 沈阳做网站找黑酷科技/seo网址优化靠谱
  • 大连 做网站公司/班级优化大师电脑版
  • 南阳市住房和城乡建设委员会 网站首页/seo免费课程
  • 做B2C独立网站的话需要做海外仓吗/学校网站模板
  • 企业网站建设的评价指标/seo1现在怎么看不了
  • 财务网站模板/搜索引擎营销的实现方法有
  • 那些门户网站的官网做的好/小说网站排名
  • 做网站费用上海/sem是什么公司
  • 360网站seo如何做/网站竞价推广都有哪些
  • 阿里云网站备案入口/百度排名怎么做
  • 成都b2c外贸网站建设/seo快速优化软件网站
  • bootstrap开发网站/实时热搜榜榜单
  • 建设官方网站怎么修改预留手机/汕头百度网络推广
  • 网站正在建设中的/网络营销培训
  • 网站规划的公司/百度竞价点击软件
  • 用vs2015做网站/网站定制的公司
  • 海南网站建设fwlit/产品推广方式有哪些
  • 网站开发公司面试题/产品品牌策划方案
  • 网站托管服务公司/华联股份股票
  • 提高网站流量原则/电子商务软文写作
  • 著名的深圳网站建设/抖音seo教程
  • 温州做网站的公司有哪些/高端定制网站建设
  • 独立网站建设实验内容/西安外包网络推广
  • 网站建设商务通什么意思/seo资源
  • 重庆做网站开发的公司/重庆好的seo平台
  • 建设银行关闭网站查询信用卡账单/成人再就业培训班