Mybatis 面试题
mybatis是一个的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
MyBatis是一框半自动化ORM映射工具,这里的半自动化是相对于Hibernate提供了全自动化ORM实现而言的半自动化。全自动化ORM实现了数据库表和实体类的映射,以及在运行时的SQL的自动生成和执行。而MyBatis却不会再运行期间为程序员自动生成SQL语句,具体的SQL语句需要程序员自己写在XML文件中,通过映射配置文件来访问数据库。将结果集返回到实体类。
(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影 响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标 签,支持编写动态SQL语句,并可重用。
(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手 动开关连接;
(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC 支持的数据库MyBatis都支持)。
(4)能够与Spring很好的集成;
(5)提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签, 支持对象关系组件维护。
(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语 句的功底有一定要求。
(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。
(1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
(2)对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的 选择。
(1)相同点:屏蔽JDBC API 的底层方问细节,使我们不用于JDBC API打交道就可以访 问数 据库
(2)不同点:Hibernate是全自动的ORM映射工具,可以在运行期间自动生成SQL语 句,Mybatis需要在xml配置文件中写SQL语句;因为Hibernate是自动生成SQL 语句的,在写复杂查询时,Hibernate实现比Mybatis复杂的多,并且Hibernate很 繁重,因为他封装了很多东西,而MyBatis则运行速度很快
#{}是SQL语句预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 35: …串替换。
Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值。
(1)第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的 属性名一致。
(2)第2种: 通过来映射字段名和实体类属性名的一一对应的关系。
(1)第一种是使用标签,逐一定义数据库列名和对象属性名之间的映射关 系。
(2)第二种是使用sql列的别名功能,将列的别名书写为对象属性名。
有了列名与属性名的映射关系后,Mybatis通过反射创建对象,同时使用反射给对象 的属性逐一赋值并返回,那些找不到映射关系的属性,是无法完成赋值的。
(1)能,不止可以一对多,一对一还可以多对多,一对多
原理:
1、单独发送一个SQL去查询关联对象,赋给主对象,然后返回主对象
2、使用嵌套查询,似JOIN查询,一部分是A对象的属性值,另一部分是关联对 象 B的属性值,好处是只要发送一个属性值,就可以把主对象和关联对象查出来
动态Sql是为了让我们可以在Xml文件内,以标签的形式编写动态的SQL,完成逻辑判断 和动态拼接Sql的功能, MyBatis提供了9个动态标签, trim、 where、 set、 foreach、 if、 choose、 when、 otherwise、 bind 。
还有很多其他的标签, resultMap、 parameterMap、 sql、 include、 selectKey,
加上动态 sql 的9个标签, trim、 where、 set、 foreach、 if、 choose、 when、 otherwise、 bind 等,
其中 sql标签为 sql片段标签,通过include标签引入sql片段,selectKey为不支持 自增 的主键生成策略标签
- 点赞
- 收藏
- 分享
- 文章举报
- Mybatis常见面试题总结
- 2020面试还搞不懂MyBatis?快看看这27道面试题!(含答案和思维导图)
- Mybatis常见面试题(转)
- hibernate和mybatis常见面试题
- mybatis 中#{}与${}的区别 (面试题)
- MyBatis常见面试题总结
- mybatis 面试题
- MyBatis基础面试题
- struts、hibernate、spring、 mybatis、 spring boot 等面试题汇总
- 关于spring,springMVC,hibernate,mybatis面试题
- mybatis面试题
- Mybatis常见面试题(转)
- 备战金九银十,Java研发面试题(Spring、MySQL、JVM、Mybatis、Redis、Tomcat)[带答案],刷起来!
- Mybatis常见面试题
- Mybatis常见面试题总结
- java面试题(SpringBoot-mybatis整合项目)
- Mybatis常见面试题
- mybatis面试题
- mybatis 面试题
- MyBatis面试题