Mybatis 一连串提问,被面试官吊打了?看这篇经典面试问题和MyBatis+MyBatis plus学习教程附后~

什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

MyBatis 是否支持延迟加载?延迟加载的原理是什么?

延迟加载的原理的是调用的时候触发加载,而不是在初始化的时候就加载信息。比如调用 a. getB(). getName(),这个时候发现 a. getB() 的值为 null,此时会单独触发事先保存好的关联 B 对象的 SQL,先查询出来 B,然后再调用 a. setB(b),而这时候再调用 a. getB(). getName() 就有值了,这就是延迟加载的基本原理。

说一下 MyBatis 的一级缓存和二级缓存?

一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,它的声明周期是和 SQLSession 一致的,有多个 SQLSession 或者分布式的环境中数据库操作,可能会出现脏数据。当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认一级缓存是开启的。

二级缓存:也是基于 PerpetualCache 的 HashMap 本地缓存,不同在于其存储作用域为 Mapper 级别的,如果多个SQLSession之间需要共享缓存,则需要使用到二级缓存,并且二级缓存可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态)。

开启二级缓存数据查询流程:二级缓存 -> 一级缓存 -> 数据库。

缓存更新机制:当某一个作用域(一级缓存 Session/二级缓存 Mapper)进行了C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。

MyBatis 分页插件的实现原理是什么?

分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。

MyBatis 与 Hibernate 有哪些不同?

  1. Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要
    程序员自己编写 Sql 语句
  2. Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常
    适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需
    求变化要求迅速输出成果。但是灵活的前提是 mybatis 无法做到数据库无关性,
    如果需要实现支持多种数据库的软件,则需要自定义多套 sql 映射文件,工作量大。
  3. Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的
    软件,如果用 hibernate 开发可以节省很多代码,提高效率。

Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

第一种是使用标签,逐一定义数据库列名和对象属性名之间的映射关系。

第二种是使用 sql 列的别名功能,将列的别名书写为对象属性名。

有了列名与属性名的映射关系后,Mybatis 通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。

#{}和${}的区别是什么?

  1. #{}是预编译处理,${}是字符串替换。
  2. Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;
  3. Mybatis 在处理{}时,就是把${}替换成变量的值。
  4. 使用#{}可以有效的防止 SQL 注入,提高系统安全性。

Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?

Mybatis 动态 sql 可以在 Xml 映射文件内,以标签的形式编写动态 sql,执行原理 是根据表达式的值 完成逻辑判断并动态拼接 sql 的功能。

Mybatis 提供了 9 种动态 sql 标签:trim | where | set | foreach | if | choose | when | otherwise | bind。

get MyBatis面试题还是要在会的基础上理解操作过才能更清楚,下面是补课时间,哪里不会点哪里~

  • mybatis框架原理
  • mybatis入门程序-工程结构
  • mybatis入门程序-根据id查询用户-映射文件
  • mybatis入门程序-根据id查询用户-程序代码
  • mybatis入门程序-根据id查询用户-程序调试
  • mybatis入门程序-根据名称查询用户
  • mybatis入门程序-查询用户小结
  • mybatis入门程序-添加用户
  • mybatis入门程序-添加用户-主键返回
  • mybatis入门程序-删除用户和更新用户
  • mybatis和hibernate的本质区别和应用场景
  • mybatis开发dao方法-sqlSession应用场合
  • mybatis开发dao方法-原始dao开发方法
  • mybatis开发dao方法-原始dao开发方法-问题总结
  • mybatis开发dao方法-mapper代理开发方法-开发规范
  • mybatis开发dao方法-mapper代理开发方法-实现

mybatisplus可以说是mybatis的加强版;

mybatis是一个优秀的持久性框架,它简化了 jdbc的代码,可以使用简单的xml 或注解来配置来映射;mybatisplus是 mybatis的增强工具,它在mybatis的基础上又添加了许多的功能,在mybatisplus 上既可以使用自身特有的功能,还可以使用mybatis的原生功能;

mybatisplus是为简化开发,提高效率而生,卷一卷

  • 了解Mybatis-Plus之简介
  • 了解Mybatis-Plus之特性
  • 了解Mybatis-Plus之架构
  • Mybatis-Plus快速开始之搭建工程
  • Mybatis+MP实现查询User
  • Spring+Mybatis+MP实现查询
  • 快速开始之实现查询User
  • 通用CRUD详解之插入操作
  • tableField注解详解
  • 通用CRUD详解之根据id更新
  • 通用CRUD详解之根据条件更新
  • 通用CRUD详解之删除操作
  • 删除操作(deleteByMap)
  • 通用CRUD详解之删除操作(delete)
  • 删除操作(deleteBatchIds)
  • 查询操作(selectById)
  • 查询操作(selectBatchIds)
  • 查询操作(selectOne)
  • 查询操作(selectCount)
  • 查询操作(selectList)
  • 查询操作(selectPage)
  • SQL注入的原理
  • Mybatis-Plus配置之基本配置)
  • Mybatis-Plus配置之进阶配置
  • Mybatis-Plus条件构造器之逻辑查询
  • Mybatis-Plus之ActiveRecord简介
  • Mybatis-Plus之ActiveRecord开启AR之旅
  • Mybatis-Plus之ActiveRecord新增数据
  • Mybatis-Plus之ActiveRecord更新数据
  • Mybatis-Plus之ActiveRecord删除数据
  • Mybatis-Plus之ActiveRecord根据条件查询数据
  • Mybatis-Plus之Oracle 主键Sequence(部署Oracle环境)
  • Mybatis-Plus之Oracle 主键Sequence(创建表以及安装驱动包到本地仓库)
  • Mybatis-Plus之Oracle 主键Sequence(编码实现序列的使用)
  • Mybatis-Plus之插件(mybatis的插件机制)
  • Mybatis-Plus之插件(mybatis的插件机制 补充)
  • Mybatis-Plus之插件(执行分析插件)
  • Mybatis-Plus之插件(性能分析插件)
  • Mybatis-Plus之插件(乐观锁插件)
  • Mybatis-Plus之插件(乐观锁插件的特别说明)
  • Mybatis-Plus之Sql 注入器(编写MyBaseMapper、MySqlInjector)
  • Mybatis-Plus之Sql 注入器(测试以及改进)
  • Mybatis-Plus之自动填充功能
  • Mybatis-Plus之逻辑删除
  • Mybatis-Plus之通用枚举
  • Mybatis-Plus之代码生成器
  • MybatisX 快速开发插件

    今天先整理这些,喜欢收藏,也可以关注哦,小扎每篇都给你惊喜~

MyBatis 常见面试题有哪些?相关推荐

  1. Mybatis常见面试题总结(详细)

    Mybatis常见面试题总结 SpringMVC常见面试题总结(超详细回答) 2020最新Java面试题(java,JavaWeb,数据库,框架),常见面试题及答案汇总 Spring常见面试题总结(超 ...

  2. Mybatis常见面试题(10个必备面试题)

    目录 面试题一:什么是Mybatis? 面试题二:Mybaits的优缺点? 面试题三:#{}和${}的区别是什么? 面试题四:Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复? ...

  3. Mybatis常见面试题(转)

    原文链接:https://www.cnblogs.com/huajiezh/p/6415388.html 1.#{}和${}的区别是什么? 注:这道题是面试官面试我同事的. 答:${}是Propert ...

  4. mysql和mybatis面试题_2020年,MyBatis常见面试题总结

    Mybatis 技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用 Mybatis 的文章,所以,一些参数使用细节略掉了,我们的目标 ...

  5. Mybatisの常见面试题

    Mybatis -面试问题 最近准备系统的学一下Mybatis,之前只有粗略的看了下,选了十个常见的面试题 1. #{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换. Mybatis ...

  6. Mybatis常见面试题总结和基本概念

    更多免费教学文章请关注这里 1.什么是mybatis? (1)mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动 ...

  7. Spring、SpringMVC、Mybatis常见面试题总结

    目录 Spring篇 spring是什么? spring 有哪些主要模块? Spring的IoC理解 Spring的AOP理解 AOP详解: 解释一下什么是 AOP? AOP 的原理(重要)⭐ JDK ...

  8. Mybatis常见面试题(三)

    Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问, B 标签能 否定义在 A 标签的后面,还是说必须定义在 A 标签的前面? :虽然 Mybatis 解析 ...

  9. MyBatis常见面试题汇总

    文章目录 概述 简介 优点 缺点 适用场景 MyBatis与Hibernate有什么不同? ORM是什么 传统JDBC开发存在什么问题? JDBC编程有哪些不足之处,MyBatis 是如何解决的? M ...

最新文章

  1. “12306” 是如何支撑百万 QPS 的?
  2. 戴着口罩如何进行人脸识别?快进来看看吧!
  3. Spring使用Quartz配置调度事务
  4. LeetCode - 785. Is Graph Bipartite?
  5. python分形几何_使用 Python 绘制分形: Koch 曲线、Julia 集、Mandelbrot 集
  6. 批改网禁止粘贴怎么破_重大利好!教育部声明,要求家长批改作业等行为,发现一起严处一起...
  7. nginx与PHP配置
  8. node.js + express 初体验【hello world】
  9. java调用webservice_Oracle触发器调用webservice说明
  10. 建立自动备份的维护计划
  11. c++的.o文件的链接顺序
  12. Appium:ios自动化环境搭建
  13. 个人独资有限公司章程模板
  14. Swarm(bzz)软启动版本v.0.0-rc2
  15. 量化投资学习必读书目(十五)-《现代投资组合理论与投资分析》
  16. [附源码]计算机毕业设计springboot公益组织登记与查询系统论文
  17. 双十一的“后方战场”,闲鱼和转转吃饱了吗?
  18. java大马后门_【猥琐流】制作一个隐藏在黑页下的大马并且添加后门
  19. Python数据分析学习系列 八 数据规整:聚合、合并和重塑
  20. SM2算法功能简述(一)

热门文章

  1. bootstrap的学习-基础样式和排版一
  2. 静态库入门(VS2017win10)
  3. confluence7安全补丁_Confluence 7 伴随程序的安装
  4. n79登陆微信显示服务器繁忙,不支持n79就算“阉割”?5G手机全网通争议又来了...
  5. TIDB-OLTP和OLAP的区别
  6. MM32F3277空闲中断+DMA接收不定长数据
  7. 登陆港股市场,阳光保险的 “价值锚点”
  8. arcgis通俗易懂教程(一)------入门教程
  9. 数说故事全新官网2.0正式上线,全新视觉焕新升级
  10. 新印的钞票如何流入市场?