首页 > 其他分享 >MyBatis面试题

MyBatis面试题

时间:2024-01-11 15:37:59浏览次数:22  
标签:面试题 映射 会话 user MyBatis 加载 延迟

MyBatis执行流程

image

  • 读取mybatis-config.xml文件
  • 构建会话工厂sqlSessionFactory
  • 创建会话SqlSession
  • Executor执行器
  • MappedStatement对象
  • 访问数据库

完整回答:
1、读取MyBatis配置文件:mybatis-config.xml加载运行环境和映射文件
2、构造会话工厂SqlSessionFactory
3、会话工厂创建SqlSession对象(包含了执行SQL语句的所有方法)
4、操作数据库的接口,Executor执行器,同时负责查询缓存的维护
5、Executor接口的执行方法中有一个MapperedStatement类型的参数,封装了映射信息
6、输入参数映射
7、输出结果映射

Mybatis是否支持延迟加载?

在MyBatis支持延迟加载,但默认没有开启

延迟加载的原理:
1、使用CGLIB创建目标对象的代理对象
2、当调用目标方法user.getOrderList()时,进入拦截器invoke方法,发现user.getOrderList()时null值
执行order列表
3、把order查询上来,然后调用user.setOrderList(List<Order> orderList),接着完user.getOrderlist方法的调用
image

回答:
延迟加载的意思是:就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据
MyBatis支持一对一关联对象和一对多关联集合对象的延迟加载
在MyBatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=true|false,默认时关闭的

MyBatis的一级、二级缓存用过吗?

本地缓存:基于PerpetualCache,本质时一个HashMap
一级缓存:作用域时Session级别
二级缓存:作用域时nameSpace和mapper的作用域,不依赖于session

标签:面试题,映射,会话,user,MyBatis,加载,延迟
From: https://www.cnblogs.com/zgf123/p/17958661

相关文章

  • mybatis向xml文件传递list参数
    问题描述  前端传递给后端一个json字符串,但其嵌套了一个list列表,xml文件里的SQL语句该如何书写? 解决方法  利用foreach标签遍历列表//核心代码<iftest="item.type!=nullanditem.type.size>0"> a.typein <foreachcollection="item.type"item="itemType"......
  • mybatis-plus实体类基类
    packagecom.camp;importcom.baomidou.mybatisplus.annotation.*;importlombok.Data;importjava.time.LocalDateTime;/***@AuthorArbor*@DescriptionTODO*/@DatapublicclassBaseEntity{privatestaticfinallongserialVersionUID=1L;......
  • spring框架基础面试题
                 ......
  • 数据库mysql面试题
                          ......
  • SpringBoot-Mybatis整合
     创建数据库CREATETABLE`user`( `id`int(11)NOTNULLAUTO_INCREMENTcomment'学号', `name`varchar(20)DEFAULTNULL, `pwd`int(11)DEFAULTNULL, PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=18DEFAULTCHARSET=utf8;创建一个springboo......
  • MyBatis实战指南(二):工作原理与基础使用详解
    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。那么,它是如何工作的呢?又如何进行基础的使用呢?本文将带你了解MyBatis的工作原理及基础使用。一、MyBatis的工作原理1.1MyBatis的工作原理工作原理图示:1、读取MyBatis配置文件mybatis-config.xml为MyBat......
  • MyBatis实战指南(二):工作原理与基础使用详解
    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。那么,它是如何工作的呢?又如何进行基础的使用呢?本文将带你了解MyBatis的工作原理及基础使用。一、MyBatis的工作原理1.1MyBatis的工作原理工作原理图示:1、读取MyBatis配置文件mybatis-config.xml为MyBa......
  • 35道必懂的 Linux 运维面试题
    Linux运维面试题,给大家参考下~1、现在给你三百台服务器,你怎么对他们进行管理?管理3百台服务器的方式:1)设定跳板机,使用统一账号登录,便于安全与登录的考量。2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。3)建立简单的服务器的系统、配置、应用的cmdb信息管理。......
  • MyBatis中使用#{}和${}占位符传递参数的各种报错信息处理
    在Mapper层使@Select注解进行SQL语句查询时,往往需要进行参数传入和拼接,一般情况下使用两种占位符#{参数名}和${参数名},两者的区别为:一、两种占位符的区别1、参数传入方式的区别#{}是预编译处理,后台输出的日志会将SQL语句中的#{}占位符输出为?,将传入的Parameter传入SQL语句。${}......
  • 34个高频的OSPF面试题,这样回答满分!
    中午好,我的网工朋友。OSPF其实一直是很多网工眼里的重点、难点。前两年学HCIE的时候,不少朋友都很害怕面试的时候问到OSPF的内容,现在改成论述好多了,写出来其实比说出来简单多了。今天给你整理了一波OSPF知识汇总,给你从基础、进阶、深挖三个阶段出发,循序渐进地带你吃透OSPF。想看更多......