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

华为云上面可以代做网站吗新建网站如何被搜索

华为云上面可以代做网站吗,新建网站如何被搜索,网站开发流程荆州,国外手机主题网站前言#xff1a; 前文我们从源码层面梳理了 SqlSessionFactory 的创建过程#xff0c;本篇我们继续分析一下 SqlSession 的获取过程。 初识 MyBatis 【MyBatis 核心概念】 案例代码#xff1a; public class MyBatisTest {Testpublic void test() throws IOException {/…前言 前文我们从源码层面梳理了 SqlSessionFactory 的创建过程本篇我们继续分析一下 SqlSession 的获取过程。 初识 MyBatis 【MyBatis 核心概念】 案例代码 public class MyBatisTest {Testpublic void test() throws IOException {//读取配置文件InputStream is Resources.getResourceAsStream(mybatis-config.xml);//创建 SqlSessionFactoryBuilder 对象SqlSessionFactoryBuilder builder new SqlSessionFactoryBuilder();//通过 SqlSessionBuilder 对象 解析 mybatis-config.xml 文件 构建一个SqlSessionFactory SqlSessionFactory sqlSessionFactory builder.build(is);//通过SqlSessionFactory构建一个SqlSessionSqlSession session sqlSessionFactory.openSession();//通过SqlSession 获取 Mapper 实例UserMapper userMapper session.getMapper(UserMapper.class);//获取数据ListUser users userMapper.findAll();//打印输出for (User user : users) {System.out.println(user);}//关闭资源session.close();is.close();} }本篇我们将主要对 sqlSessionFactory.openSession() 这句代码进行分析。 获取 SqlSession 源码分析 DefaultSqlSessionFactory#openSession 方法源码分析 DefaultSqlSessionFactory#openSession 方法只是调用了 DefaultSqlSessionFactory#openSessionFromDataSource 方法并传入了默认的执行器类型、隔离级别、是否自动提交参数。 //org.apache.ibatis.session.defaults.DefaultSqlSessionFactory#openSession() public SqlSession openSession() {//使用默认的执行器类型(默认是SIMPLE) 默认隔离级别 非自动提交 委托给 openSessionFromDataSource 方法return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, false); }执行器类型 SIMPLE简单执行器 SimpleExecutor每执行一条 SQL都会打开一个 Statement执行完成后会关闭。REUSE重用执行器 ReuseExecutor其内部会缓存一个 MapString, Statement 每次编译完成的 Statement 都会进行缓存不会关闭可以重复使用。BATCH批量执行器基于 JDBC 的 addBatch、executeBatch 功能只能作用于 insert、update、delete 语句。CachingExecutor缓存执行器使用了装饰器模式在开启缓存的时候会在上面三种执行器上包装一层 CachingExecutor。 package org.apache.ibatis.session;public enum ExecutorType {SIMPLE,REUSE,BATCH;private ExecutorType() {} }DefaultSqlSessionFactory#openSessionFromDataSource 方法源码分析 DefaultSqlSessionFactory#openSessionFromDataSource 方法逻辑很简单先获取创建 SqlSession 的必要参数然后调用 DefaultSqlSession 的构造方法创建了 SqlSession 。 //org.apache.ibatis.session.defaults.DefaultSqlSessionFactory#openSessionFromDataSource private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {//事务Transaction tx null;//SqlSessionDefaultSqlSession 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);//根据配置 执行器 事务提交方式创建一个默认的 SqlSessionvar8 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; }//org.apache.ibatis.session.defaults.DefaultSqlSession#DefaultSqlSession(org.apache.ibatis.session.Configuration, org.apache.ibatis.executor.Executor, boolean) public DefaultSqlSession(Configuration configuration, Executor executor, boolean autoCommit) {this.configuration configuration;this.executor executor;this.dirty false;this.autoCommit autoCommit; }Configuration#newExecutor 方法源码分析 Configuration#newExecutor 主要是对执行器类型进行判断然后生成执行器并通过动态代理得到代理对象并将执行器加入拦截器链。 //org.apache.ibatis.session.Configuration#newExecutor public Executor newExecutor(Transaction transaction, ExecutorType executorType) {executorType executorType null ? this.defaultExecutorType : executorType;executorType executorType null ? ExecutorType.SIMPLE : executorType;Object executor;//执行器类型判断if (ExecutorType.BATCH executorType) {executor new BatchExecutor(this, transaction);} else if (ExecutorType.REUSE executorType) {executor new ReuseExecutor(this, transaction);} else {executor new SimpleExecutor(this, transaction);}//是否开启缓存if (this.cacheEnabled) {//开启缓存 创建缓存执行器executor new CachingExecutor((Executor)executor);}//责任链模式 将执行器加入拦截器链 使用JDK动态代理增强所有的拦截器 Executor executor (Executor)this.interceptorChain.pluginAll(executor);return executor; }获取 SqlSession 的源码很简单希望可以帮助到有需要的小伙伴。 欢迎提出建议及对错误的地方指出纠正。
http://www.hkea.cn/news/14430729/

相关文章:

  • 多语言企业网站建设jsp是前端还是后端开发的
  • 乐云seo网站建设性价比高胖咯科技 网站建设
  • 网站设计策划案绥化市新闻最新消息
  • 制作百度移动网站wordpress交易平台主题
  • 仿牌外贸网站浙江城乡建设局和住建局
  • 自己做的网站链接到微信支付界面网站建设与管理考察报告
  • 网站 底部医院网站建设 费用
  • 网站建设山东公司怎么制作应用软件
  • 网站建设的具体步骤有哪些seo快速工具
  • 网站营销是什么意思wordpress最新免费主题下载地址
  • 没网站可以做seo吗做网站模板的软件
  • 退工在那个网站上做建设网站需要体现的流程有哪些内容
  • 网站开发需求清单WordPress用户发表插件
  • 临沂国际外贸网站建设基于django网站开发课设报告
  • 找网站做网站做网站北京商城网站建设
  • 温州做模具的网站佛山市网站公司
  • 花生壳如何建设网站用手机制作图片的app
  • 企业网站托管方案《两学一做 榜样》网站
  • 可以做免费的网站吗比较好的源码网站
  • 咋做黄页网站数字营销网站主页优化
  • 别人网站 自己的域名wordpress文章改背景色
  • 交通建设网站在网站接入银联怎么做
  • 做企业网站要怎么设计方案php网页转wordpress
  • 无忧中英繁企业网站系统通用版长沙公司网站制作
  • 网站站内内链建设汉中网站建设服务
  • 自己做网站用什么软件广州专门做网站的公司有哪些
  • 乐平网站seo自动推广软件
  • 以下哪个不是网站开发工具湖北建站
  • 阿里巴巴注册网站首页毕节金海湖新区城乡建设局网站
  • 网站建设使用的什么软件有哪些内容网页制作员工作厂家电话