在很久以前我就想要写一些有关于框架的文章了,MyBatis 是我最早学习并上手的一个框架,也想了很久 MyBatis 应该从哪里开始写起。
我们认识一件事物,都是从他的定义,他的作用这两方面开始认识的。也就是:是什么?为什么?再深入怎么做?
因此 MyBatis 这篇文章,我也将从**是什么?为什么要用 MyBatis?**开始讲起。否则,我们就不知道我们使用 MyBatis 的意义何在了
那么你为什么要学 MyBatis 呢?
也许很多人和我一样,因为市面上流行的都是 SSM 框架,同时市面上的免费/付费教程都使有关 MyBatis 的,因此也紧跟潮流与大多数人一起学了 MyBatis。
那么究竟为什么 MyBatis 这么流行,大家都在用,他的优点在哪,又有哪些不足的地方?我们先来看什么是 MyBatis
来自于百度和官方文档的定义
这些也许已经是老生常谈了,但是该了解的我们依旧有必要重复一下。因为这个系列是以 MyBatis 的源码分析为主,如果大家对 MyBatis 的使用还有不了解的地方,这里推荐几个学习方式
MyBatis 的使用教程
我们需要一门新技术,肯定是原来的技术无法满足我们的需求所致。因此,我们需要先查看一下原来 JDBC 的实现方式是怎样的。
原生 JDBC 连接
我们先看看最基础的通过 JDBC 查询数据库,一般需要7个步骤
在这几个流程中,JDBC 存在着一些问题,或者是一些执行流程能够做高度封装, MyBatis 都做出了解决方式。
对于 JDBC 而言,Sql 语句的编写存在以下的问题:
MyBatis 的解决方法
对于 JDBC 而言,动态 Sql 的获取存在以下问题
MyBatis 的解决方法
对于 JDBC 而言,结果映射存在以下问题
MyBatis 的解决方法
在写 JDBC 的时候经常会在多个 Java 类中调用差不多的 Sql 语句,甚至是同一个 Sql 语句。有时候如果需要改表的字段,就要对很多个类进行修改。
MyBatis 的解决方案
将 Sql 语句放到 xml 文件中,则需要用到的时候就调用 Sql 语句的 key 调用,则不会产生 Sql 语句的重复问题。
同样作为持久层的开源框架,MyBatis 不免要被拿来与 Hibernate、JPA 相比。
映射关系
使用情况
Hibernate、JPA 可以自动生成 Sql 语句,可以降低使用成本,在进行数据库移植时,代价也会更小,因此更加稳定;但也有弊端,就是缺乏灵活性,也不易对 Sql 语句进行优化,毕竟是自动生成的。
反观 MyBatis,虽然无论多简单的语句都需要手写 Sql 语句,使得使用成本大大增加;但灵活性也就更强,也提供了改动和优化 Sql 语句的机会。此外,MyBatis 还提供了插件机制,用户可以按需自定义插件。
国情也占了一部分原因。在国内,一个系统的需求需要经常性做修改,数据库的字段也会不断更新,因此就需要更加灵活多变的框架。这是 MyBatis 在国内更流行的原因。
同时,MyBatis 的学习成本更低,更小巧方便。
当然,MyBatis - Plus 在 MyBatis 的基础上进行了单表操作的封装,让 MyBatis 的开发更加简单了,这是后话了。
后续还会有更精彩内容,欢迎关注公众号:林枍。学习Java基础、数据结构、流行框架