这份Mybatis总结,我觉得你很需要!
2020-04-24 16:04:50来源:博客园 阅读 ()
这份Mybatis总结,我觉得你很需要!
我不要你觉得,我要我觉得前言
只有光头才能变强。
文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y
Mybatis应该是国内用得最多的「数据访问层」框架了,我看了我司的好几个系统,基本都是用Mybatis的。
实话实说,我对Mybatis没有很深入的了解,也仅仅是处于「会用」的阶段上。日常的要加张表,加个字段就是写写DAO/Mapper
。
为什么没有深入去研究Mybatis的原因很可能是面试其实问得不是特别多,起码我在校招的时候面了很多家公司,也没怎么问我Mybatis的。
Mybatis如果仅仅是要「会用」,入门是非常快的,感觉两三天就可以搞好了。
认识Mybatis
在前阵子已经总结过了JDBC了,无论是什么的ORM框架(Object Relation Mapping)其实都是在JDBC上封装了一层,底层用的都是JDBC的代码。
众所周知,直接写JDBC的代码的效率是最高的。那为什么要用ORM框架呢??
回想起我第一次实习看到公司代码时的感受:「卧槽,代码怎么这么多啊。这为什么有这么多的包啊,一直点开都有」
如果纯用JDBC,只要项目是有点规模的,那我们的项目里代码量一定会很多。最重要的是,很多的代码都是重复的。如果我们的项目里边积累了这么多的重复代码,最致命的问题就是「不好维护」
于是就有了这么多的ORM框架,至于用哪一个ORM框架,我觉得没有对错之分,公司用哪个你就用哪个就好了。
毕竟技术都是服务于业务,公司在选型的时候,选了某ORM框架,肯定也有当时的一个考虑。等到真的是由于使用了某ORM框架导致无法承接掉业务的时,那自然而然就会有优化。
在知乎上有很多「Mybatis与Hibernate/SpringData JPA」的对比,有兴趣的小伙伴可以去学习学习,看着大佬们的「回答/讨论」还是能学到不少的东西的。
Mybatis作为一个ORM框架,在市面上非常受欢迎,只要有JDBC基础,学会用很简单。
不BB了,开始吧。
入门
使用Mybatis的步骤大致如下:
首先我们需要配Mybatis的一份配置文件,这份配置文件主要配置数据库相关的信息:
随后,我们编写一个工具类来获取sqlSession,这个SQLSession相当于JDBC的Connection对象
然后编写我们的映射文件,这个映射文件实际上就是对象与数据库的映射关系:
我们在映射文件上使用<insert>
标签来实现插入:
然后调用sqlSession来实现插入即可:
效果如下:
看到这里,会不会觉得好像有点复杂?其实这几个步骤都很自然而然的:
- 要操作数据库,总会有数据库相关的配置吧。(这块实际上就写一次,第一次写完了就不用再写了)
- 要操作数据库,得告诉程序怎么操作吧,所以有映射文件(可以是
XML
的映射文件,也可以是注解的方式,反正我们得开个口子去告诉程序怎么执行) - 然后我们操作SQLSession去执行命令(这块后面我们可以把SQLSession直接屏蔽掉)
所以,用Mybatis实际上就是写映射文件/注解
去告诉程序怎么操作,而映射文件/注解
其实就是写SQL,对我们来说并不是难事。
因此,Mybatis入门是真的简单。
Mybatis细节
动态SQL
动态SQL实际上就是使用Mybatis给我们提供的if/foreach
之类的标签去判断传递进来的参数有没有值,如果有值我们就拼接参数,如果没有,我们就不拼接。
缓存
了解Mybatis的一级缓存和二级缓存是什么意思,Mybatis的缓存实现可以用ehcache
来管理。
如果某些数据查询量大而且不怎么修改的,我们可以考虑使用ehcache
来对这部分的数据进行缓存,减少数据库的压力。
Mapper代理
在最开头的例子我们看到我们使用Mybatis在开发中也不见得简单很多,因为有SQLSession
这一块还是需要我们手动去编写。
我们可以使用Mapper代理的方式屏蔽掉SQLSession
这块的代码,开发只要写一个接口
+一个Mapper.xml(或者注解)
就足够了。
那是怎么屏蔽的呢?依靠的是动态代理。为什么可以依靠动态代理来实现呢?因为我们Mapper代理是需要依赖「规则」的,有了「规则」我们就可以通过「反射」去简化我们的代码了。
逆向工程
通过Mapper代理我们已经可以实现「一个接口+一个Mapper映射文件(注解)」就可以开发我们的程序了。
而又因为在工作中,CRUD是避免不了的,几乎每增加一张表,都需要有「最基本」的CRUD。
于是程序员们又偷懒了,连「最基本」的CRUD都不想自己写了,于是就有了逆向工程。
我们看一下逆向工程的配置就差不多能看懂是干啥的了:
通过表的结构,生成我们自己的JavaBean以及对应的Mapper接口和Mapper映射文件。
Mybatis-plus
Mybatis-plus又是程序员偷懒造出的轮子(狗头
这款插件说实话我没用过,看了一下官网,大致就是:简单的CRUD,我连XML都不需要了,API直接帮我们内置了对应的CRUD方法。
有兴趣的同学去学学,都是能提高开发效率的工具。
https://mp.baomidou.com/
放干货
现在已经工作有一段时间了,为什么还来写Mybatis
呢,原因有以下几个:
- 我是一个对排版有追求的人,如果早期关注我的同学可能会发现,我的GitHub、文章导航的
read.me
会经常更换。现在的GitHub导航也不合我心意了(太长了),并且早期的文章,说实话排版也不太行,我决定重新搞一波。 - 我的文章会分发好几个平台,但文章发完了可能就没人看了,并且图床很可能因为平台的防盗链就挂掉了。又因为有很多的读者问我:”你能不能把你的文章转成PDF啊?“
- 我写过很多系列级的文章,这些文章就几乎不会有太大的改动了,就非常适合把它们给”持久化“。
基于上面的原因,我决定把我的系列文章汇总成一个PDF/HTML/WORD/epub
文档。说实话,打造这么一个文档花了我不少的时间。为了防止白嫖,关注我的公众号回复「888」即可获取。
Mybatis电子书,有兴趣的同学可以浏览一波。共有「92」页
文档的内容均为手打,有任何的不懂都可以直接来问我(公众号有我的联系方式)。
?? 各类知识点总结
下面的文章都有对应的原创精美PDF,在持续更新中,可以来找我催更~
- 92页的Mybatis
- 129页的多线程
- 141页的Servlet
- 158页的JSP
- 76页的集合
- 64页的JDBC
- 105页的数据结构和算法
- Spring家族
- Hibernate
- AJAX
- 监听器和过滤器
- ......
涵盖Java后端所有知识点的开源项目(已有7 K star):https://github.com/ZhongFuCheng3y/3y
如果大家想要实时关注我更新的文章以及分享的干货的话,微信搜索Java3y。
原文链接:https://www.cnblogs.com/Java3y/p/12765350.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JAVA面试——请记住这些
下一篇:JavaDoc 生成文档
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 总结一些 Java 相关笔试、面试题,万一用上了呢 (=_=) -- 基 2020-06-08
- 天哪!手动编写mybatis雏形竟然这么简单 2020-06-06
- 最新四面京东拿offer回来分享面试经验总结(技术三面+HR面) 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash