以mybatis为例,如果技术你能学到这样,程序猿,你还怕什么面试官

一场疫情,

开启了2020应届生(不仅仅是应届生,还有工作没几年的小伙伴,都可以看一下)求职的地狱模式:

实习,辞了

考研,凉了

论文,废了

春招,歇了

......

别说拿高薪,有份工作都难!

当「想象」遇上「现实」,

现在的你,

还挺得住吗?

(*文末有求职福利*)

春招

想象中

「人山人海」

现实中

「等下一个春天~」

面试

想象中

「侃侃而谈」

现实中

「竟无语凝噎···」

实习

想象中

「风风火火」

现实中

「为什么受伤的总是我···」

简历

「一投即中」

现实中

「石沉大海···」

offer

想象中

「疯狂袭来」

现实中

「仿佛等一个心上人···」

薪资

想象中

「拿到手软」

现实中

「走个流程而已···」

6

学习

想象中

「大家都一样」

现实中

「总有人偷偷学习···」

难道实习生真的就没有出路了吗?开玩笑。怎么可能,最近公司刚来的那个实习生,比很多工作几年的人都麻利,有一次,无意中发现他在整理一张思维导图,反正快下班了,就顺便和她聊了一下,他问我,老大。mybatis你掌握的怎么样啊

我想了一下,说了一句:解决bug没有什么问题,底层源码也能跟你聊一下,

然后他说了一句至今让我难以忘却的话,那你能从头到尾给我大致的罗列一下mybatis的知识点吗?

我去,开玩笑,怎么可能,然后在我惊讶的表情中,我看到了他打开了下面的这些东西。。。

回到家后,吃完饭,我就在回想自己这几年的工作经历,突然发现,好像我已经没有了什么冲劲,会的东西很多,但要说详细,真的不如新来公司的实习生,然后我以mybatis为例,整理了下面的文章

认识Mybatis

为什么我们要是用mybatis呢?

回想起我第一次实习看到公司代码时的感受:「卧槽,代码怎么这么多啊。这为什么有这么多的包啊,一直点开都有」

如果纯用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方法。

有兴趣的同学去学学,都是能提高开发效率的工具。

这里只是整理了一部分关于mybatis的知识点,试问看到这里的各位,无论你是应届生还是已经工作几年的老铁,你的学习和知识点学到这样的一个地步了吗?这还只是一个mybatis

来看一下他整理的其他的

基础:

架构

架构的东西有很多是他通过看书进行规划的,好多都没学过,我又帮他补充了一部分

大数据

我不说别的,单就整理的这份文档的态度,我想他在日常工作中的状态大家应该也明白吧,当然了,也跟这个小伙的学校有关系,他能接触到很多其他的学校接触不到的东西,但是,这是你不努力的理由吗?你接触到的学的怎么样呢?

其实,这也是很多程序员面临的一个问题,学的东西很多,但是,都是跟着业务需求学习,从来没有进行过详细的整理,这也造成一个现象,就是感觉自己会的很多,但是当要准备面试的时候,却发现好像什么也不会,你缺乏的可能就是这样的一张知识脑图,把自己的知识点梳理起来

好了,不知道,为什么,越写越激动,可能也是为自己这些年的虚度而悲愤吧

想要这些完整的知识图谱的,关注公众号:Java架构师联盟,回复架构图即可,只要你来,只要我有

原创文章 134 获赞 66 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42864905/article/details/106001545