MyBatis很落后吗( 二 )




我们在映射文件上使用\u0026lt;insert\u0026gt;标签来实现插入:

MyBatis很落后吗


然后调用sqlSession来实现插入即可:

MyBatis很落后吗


效果如下:

MyBatis很落后吗


看到这里,会不会觉得好像有点复杂?其实这几个步骤都很自然而然的:
要操作数据库,总会有数据库相关的配置吧。(这块实际上就写一次,第一次写完了就不用再写了)要操作数据库,得告诉程序怎么操作吧,所以有映射文件(可以是XML的映射文件,也可以是注解的方式,反正我们得开个口子去告诉程序怎么执行)然后我们操作SQLSession去执行命令(这块后面我们可以把SQLSession直接屏蔽掉)所以,用Mybatis实际上就是写映射文件/注解去告诉程序怎么操作,而映射文件/注解其实就是写SQL,对我们来说并不是难事。
因此,Mybatis入门是真的简单。

MyBatis很落后吗


Mybatis细节动态SQL动态SQL实际上就是使用Mybatis给我们提供的if/foreach之类的标签去判断传递进来的参数有没有值,如果有值我们就拼接参数,如果没有,我们就不拼接。

MyBatis很落后吗


缓存了解Mybatis的一级缓存和二级缓存是什么意思,Mybatis的缓存实现可以用ehcache来管理。
如果某些数据查询量大而且不怎么修改的,我们可以考虑使用ehcache来对这部分的数据进行缓存,减少数据库的压力。

MyBatis很落后吗


Mapper代理在最开头的例子我们看到我们使用Mybatis在开发中也不见得简单很多,因为有SQLSession这一块还是需要我们手动去编写。
我们可以使用Mapper代理的方式屏蔽掉SQLSession这块的代码,开发只要写一个接口+一个Mapper.xml(或者注解)就足够了。
那是怎么屏蔽的呢?依靠的是动态代理。为什么可以依靠动态代理来实现呢?因为我们Mapper代理是需要依赖「规则」的,有了「规则」我们就可以通过「反射」去简化我们的代码了。

MyBatis很落后吗


逆向工程通过Mapper代理我们已经可以实现「一个接口+一个Mapper映射文件(注解)」就可以开发我们的程序了。
而又因为在工作中,CRUD是避免不了的,几乎每增加一张表,都需要有「最基本」的CRUD。
于是程序员们又偷懒了,连「最基本」的CRUD都不想自己写了,于是就有了逆向工程。
我们看一下逆向工程的配置就差不多能看懂是干啥的了:

MyBatis很落后吗


通过表的结构,生成我们自己的JavaBean以及对应的Mapper接口和Mapper映射文件。


推荐阅读