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

珠海哪家做企业网站公司好企业品牌推广策划方案

珠海哪家做企业网站公司好,企业品牌推广策划方案,藤县疫情最新消息今天,外贸单子怎么找目录: 第一题. MyBatis的框架架构设计是怎么样的?第二题. 为什么需要预编译?第三题. Mybatis都有哪些Executor执行器?它们之间的区别是什么?第四题. Mybatis中如何指定使用哪一种Executor执行器?第五题. Mybatis是否支持延迟加载…

在这里插入图片描述

目录:

  • 第一题. MyBatis的框架架构设计是怎么样的?
  • 第二题. 为什么需要预编译?
  • 第三题. Mybatis都有哪些Executor执行器?它们之间的区别是什么?
  • 第四题. Mybatis中如何指定使用哪一种Executor执行器?
  • 第五题. Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

第一题. MyBatis的框架架构设计是怎么样的?

在这里插入图片描述
这张图从上往下看。MyBatis的初始化,会从mybatis-config.xml配置文件,解析构造成Configuration这个类,就是图中的红框。
(1)加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)SQL解析:当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。
(3)SQL执行:将最终得到的SQL和参数拿到数据库进行执行,得到操作数据库的结果。
(4)结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。

第二题. 为什么需要预编译?

  1. 定义
    SQL 预编译指的是数据库驱动在发送 SQL 语句和参数给 DBMS 之前对 SQL 语句进行编译,这样 DBMS 执行 SQL 时,就不需要重新编译。
  2. 为什么需要预编译
    JDBC 中使用对象 PreparedStatement 来抽象预编译语句,使用预编译。预编译阶段可以优化 SQL 的执行。预编译之后的 SQL 多数情况下可以直接执行,DBMS 不需要再次编译,越复杂的SQL,编译的复杂度将越大,预编译阶段可以合并多次操作为一个操作。同时预编译语句对象可以重复利用。把一个 SQL 预编译后产生的 PreparedStatement 对象缓存下来,下次对于同一个SQL,可以直接使用这个缓存的 PreparedState 对象。Mybatis默认情况下,将对所有的 SQL进行预编译。

第三题. Mybatis都有哪些Executor执行器?它们之间的区别是什么?

Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。
SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。
ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map内,供下一次使用。简言之,就是重复使用Statement对象。
BatchExecutor:执行update(没有select,JDBC批处理不支持select),将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理。与JDBC批处理相同。
作用范围:Executor的这些特点,都严格限制在SqlSession生命周期范围内。

第四题. Mybatis中如何指定使用哪一种Executor执行器?

在Mybatis配置文件中,在设置(settings)可以指定默认的ExecutorType执行器类型,也可以手动给DefaultSqlSessionFactory的创建SqlSession的方法传递ExecutorType类型参数,如SqlSession openSession(ExecutorTypeexecType)。

配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语
句(prepared statements); BATCH 执行器将重用语句并执行批量更新。

第五题. Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false。它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a的对象b属性就有值了,接着完成a.getB().getName()方法的调用。这就是延迟加载的基本原理。
当然了,不光是Mybatis,几乎所有的包括Hibernate,支持延迟加载的原理都是
一样的

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力
在这里插入图片描述

http://www.zhongyajixie.com/news/61807.html

相关文章:

  • 商城购物网站设计内容标题优化方法
  • 一元夺宝网站建设2017网站结构有哪几种
  • 货到付款网站怎么做百度高级搜索技巧
  • 网站建设宝安seo综合检测
  • 莱西市城乡建设局网站网站关键字优化技巧
  • 高端品牌网站建设电商网站设计怎么样推广自己的店铺和产品
  • 微网站的优缺点活动推广软文范例
  • 网站开发文档范文百度推广课程
  • 文档做网站淘宝流量网站
  • 没有备案的网站怎么访问百度一下你就知道百度官网
  • 办公oa系统大概多少钱seo外包上海
  • 网站站长英文西安seo关键词排名优化
  • 网站的风格与布局的设计seo关键词优化工具
  • 面签拍照 网站备案网络推广策划
  • 做网站提供服务器吗网络营销类型
  • 珠海品牌型网站建设app推广项目从哪接一手
  • 网站运营推广怎做临沂百度联系方式
  • 专门做10s视频的网站整站优化外包服务
  • 温州网站关键词推广重庆seo排名电话
  • 个人网站特点学会计哪个培训机构比较正规
  • 网站栏目名长春网站关键词排名
  • 珠海新盈科技有限公司 网站建设百度关键词排名优化
  • 做业务网站最优化方法
  • 建网站 陕西牛人网络科技免费b站推广网址有哪些
  • 做网站架构需要什么步骤什么叫做网络营销
  • 网络营销机构官方网站上海专业排名优化公司
  • vps搭建网站需要空间免费模板网站
  • 其它类型的定制营销型网站推广普通话的意义简短
  • 顺德疫情最新情况今天seo是什么意思新手怎么做seo
  • 网站建设CEO微信推广广告在哪里做