MyBatis的常见问题

255 阅读2分钟

转载原文:www.nowcoder.com/discuss/384…

1、MyBatis简介

1.1 MyBatis是什么?

1.2 ORM是什么

1.3 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?

1.4 传统JDBC开发存在的问题

1.5 JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?

1.6 Mybatis优缺点

1.7 MyBatis框架适用场景

1.8 Hibernate 和 MyBatis 的区别

2、MyBatis的解析和运行原理

2.1 MyBatis编程步骤是什么样的?

2.2 请说说MyBatis的工作原理

2.3 MyBatis的功能架构是怎样的

2.4 MyBatis的框架架构设计是怎么样的

2.5 为什么需要预编译

2.6 Mybatis都有哪些Executor执行器?它们之间的区别是什么?

2.7 Mybatis中如何指定使用哪一种Executor执行器?

2.8 Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

3、映射器

3.1 #{}和${}的区别

3.2 模糊查询like语句该怎么写

3.3 在mapper中如何传递多个参数

3.4 Mybatis如何执行批量操作

3.5 如何获取生成的主键

3.6 当实体类中的属性名和表中的字段名不一样 ,怎么办

3.7 Mapper 编写有哪几种方式?

3.8 什么是MyBatis的接口绑定?有哪些实现方式?

3.9 使用MyBatis的mapper接口调用时有哪些要求?

3.10 最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗

3.11 Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

3.12 简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?

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

3.14 Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

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

4、高级查询

4.1 MyBatis实现一对一,一对多有几种方式,怎么操作的?

4.2 Mybatis是否可以映射Enum枚举类?

5、动态SQL

Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?

6、插件模块

6.1 Mybatis是如何进行分页的?分页插件的原理是什么?

6.2 简述Mybatis的插件运行原理,以及如何编写一个插件。

7、缓存

7.1 Mybatis的一级、二级缓存