当前位置: 首页 > 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.wangmingla.cn/news/97029.html

相关文章:

  • 网站建设设计公司百度快速seo优化
  • 没注册可以做网站吗抖音搜索优化
  • 台州本地做网站的b2b平台有哪些平台
  • 建设论坛网站视频百度关键词优化服务
  • 企业网站建设博客论坛站长统计是什么意思
  • 河南省住建局官网北京专业seo公司
  • 卫浴网站源码seo搜索如何优化
  • 怎么将网站权重提上去郑州网站运营
  • 那个网站招丑的人做网红搜索引擎优化的要点
  • 禅城做网站网建公司
  • 各类软件代理加盟天津百度关键词seo
  • 卖渔具的亲戚做网站免费制作个人网站
  • wordpress简体中文下载国外seo大神
  • 胶州网站建设哪家好市场营销专业就业方向
  • 做外文H网站一键优化下载安装
  • 醴陵网站建设llwzjs重庆seo扣费
  • 网站开发最佳实践百度推广的优势
  • 注册深圳公司条件信息流优化师职业规划
  • 网站设计会存在什么问题seo站长平台
  • 北京微信网站搭建费用阿里云盘资源搜索引擎
  • 大岭山镇做网站小红书sem是什么意思
  • 公司网站建设需要些什么要求湖南产品网络推广业务
  • 深圳网站建设工作国外seo大神
  • 网易对象存储wordpress广州宣布5条优化措施
  • 绍兴注册公司快速优化系统
  • 唐河企业网站制作价格螺蛳粉营销策划方案
  • 购物网站开发论文可行性分析百度搜索量最大的关键词
  • wordpress并发关键词优化的原则
  • 长沙网站制作哪家好seo营销推广
  • 怎么做个手机版的网站最新一周新闻