当前位置: 首页 > 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.yayakq.cn/news/655050/

相关文章:

  • 个人做游戏下载网站侵权吗专业客户管理系统
  • 做企业网站需要准备什么河北建设集团官网
  • 中山祥云网站建设西安网站制作工商
  • 网站建设规划申请网站建设前分析
  • 中英文企业网站模板公司网站后台登陆
  • 网站设计报告成都微信微网站建设
  • 个体工商户做网站做软件与做网站建设有什么区别
  • 网站安全风险提示单百度找不到 网站
  • 黑龙江省高速公路建设局网站记事本做网站的代码
  • 好心人给个安全的网站建设网站需要那些技术人员
  • vps绑定多个网站2014做社交网站
  • php网站怎么做的事件营销成功案例
  • 特殊符号网站网站层次索引模板
  • 湖北企业建站系统信息自动建立wordpress
  • 仓山网站建设深圳市福田区住房和建设局
  • 网站域名 格式会网站建设怎样赚钱
  • 国外做微课的网站济南网站建设安卓版
  • 怎么做移动端的网站wordpress tml
  • 北京网站建设 奥美通全网营销seo排名网
  • 网站内容描述做网站站长先把作息和身体搞好
  • 专门做app网站wordpress中文版支持繁体
  • 国外优质设计网站wordpress 流程
  • 网站搭建什么意思小米商城的网站建站
  • 网站 用户体验的重要性汕头网站制作专业
  • 做网站最专业的公司有哪些怎么设计网站规划方案
  • 建筑工程网官方网站做网站赚钱难
  • 做网站时会留下ip地址吗网站导航栏字体
  • 石家庄网站建设wsjz烟台网站建设方案咨询
  • 苏州建设工程合同备案网站凡科互动电话
  • 漂亮的个人网站巫山集团网站建设