前言
很多人说mybatis是否重要?在这里,互联网公司基本上使用mybatis作为持久层框架,因此必须学习mybatis。
程序员80%时间都在CRUD,对了mybatis就是干这个的
什么是 MyBatis ?
MyBatis是一个实现了JPA规范的用来连接数据库并对其进行增删改查操作的开源框架 (就和传统的JDBC一样,就是个连接数据库的东西),其实,它底层就是一个JDBC封装的组件。MyBatis的前身是Ibatis,Ibatis创建与2002年最初为Apache下面的一个开源项目,2010迁移到google code下面并改名为MyBatis。
MyBatis虽然实现了JPA但是它并不是一个完完全全的ORM组件,而是一个基于SQL开发的半ORM组件。
而Hibernate是一个完完全全的ORM组件,它是完全基于对象来操作数据库中的记录,并不和MyBatis一样是一个假把式。
为什么我们要⽤Mybatis?
⽆论是Mybatis、Hibernate都是ORM的⼀种实现框架,都是对JDBC的⼀种封装!
打开UC浏览器 查看更多精彩图片
到⽬前为⽌,我们已经在持久层中学了⼏种技术了…
-
Hibernate
-
jdbc
-
SpringDAO
那我们为啥还要学Mybatis呢???现在Mybatis在业内⼤⾏其道,那为啥他能那么⽕呢??
Hibernate是⼀个⽐较⽼旧的框架,⽤过他的同学都知道,只要你会⽤,⽤起来⼗分舒服…啥sql代码都不⽤写…但是呢,它也是有的缺点::处理复杂业务时,灵活度差, 复杂的HQL难写难理解,例如多表查询的HQL语句,⽽JDBC很容易理解,就那么⼏个固定的步骤,就是开发起来太麻烦了,因为什么都要我们⾃⼰⼲..
我们可以认为,Mybatis就是jdbc和Hibernate之间的⼀个平衡点…毕竟现在业界都是⽤这个框架,我们也不能不学呀!
今天分享字节跳动珍藏版的Mybatis文档,可以帮助你快速入门Mybatis!
关注公众号:程序员追风,回复011 领取mybatisP文档(含思维导图和面试题)
关于Mybatis的知识点总结了一个思维导图,分享给大家。
互联网公司常问的Mybatis面试题总结
1.为什么需要预编译?
2.Mybatis都有哪些Executor执行器?它们之间的区别是什么?
3.Mybatis中如何指定使用哪一种Executor执行器?
4.Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
5.# {}和${}的区别?
6.模糊查询like语句该怎么写?
7.在mapper中如何传递多个参数?
8.Mybatis如何执行批量操作?
9.如何获得生成的主键?
10.当实体类中的属性名和表中的字段名不一样 ,怎么办
11.Mapper 编写有哪几种方式?
12.什么是MyBatis的接口绑定?有哪些实现方式?
13.使用MyBatis的mapper接口调用时有哪些要求?
14.最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?
15.Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
16.简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?
17.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
18.MyBatis中所有标签?
19.MyBatis实现一对一,一对多有几种方式,怎么操作的?
20.Mybatis是否可以映射Enum枚举类?
21.Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?
22.分页方式?
23.简述Mybatis的插件运行原理,以及如何编写一个插件?
24.Mybatis的一级、二级缓存?
25.pageHelper原理?
常见的这些Mybatis面试题答案都整理成了PDF文档。
关注公众号:程序员追风,回复011 领取mybatisP文档(含思维导图和面试题)
总结