面试题Mybatis篇

Mybatis执行流程:

        

        

 面试题:

        Mybatis执行流程:

        1.读取Myabtis配置文件:mybatis-config.xml加载运行环境和映射文件

        2.构造会话工厂SqlSessionFactory

        3.会话工厂创建SqlSession对象(包含了执行Sql语句的所有方法)

        4.操作数据区的接口,Executor执行器,同时负责查询缓存的维护

        5.Executor接口的执行方法有一个MappedStatement对象封装映射信息

        6输入参数映射(java->数据库类型)

        7输出结果映射(数据库类型->java类型)

                

延迟加载使用及其使用原理: 

      

 

面试题: 

        

        Mybatis是否支持延迟加载?

        延迟加载的意思是需要用到数据时才进行加载,不需要用到数据时就不加载数据

        Myabtis支持一对一关联对象和一对多关联对象的延迟加载

        在Mybatis配置文件中,可以配制是否启用延迟加载lazyLoadingEnabled=true|false,默认是关闭的

        延迟加载的底层原理知道吗?

        1.使用CGLIB创建目标的代理对象。

        2.当调用目标方法后,进入拦截器invoke方法,发现目标是null值时,执行sql查询。

        3.获取数据后,调用set方法设置属性值,再继续查询目标方法,就有值了。

Myabtis 一级二级缓存:

                

 一级缓存:

        基于PerpetualCache的HashMap 本地缓存,其存储作用域为Session,当Session进行flush或close之后,该Session中所有Cache就将清空,默认打开一级缓存。

        

二级缓存: 

        二级缓存是基于namespace和mapper的作用域起作用的,不是依赖于SQL session,默认也是采用PerpetualCache,HashMap存储

        

 

面试题:

         

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值