快点进来!一篇文章搞不懂Mybatis框架

前言

最近刚把Mybatis框架给看完,这篇文章一方面是复习学过的内容,理清知识脉络,一方面是给新手学习Mybatis提供一个思路总览,给大佬一个复习查阅地点,期待大家收藏!

Mybatis简述

Mybatis是Java中的一个十分常用的框架,主要应用在持久层(数据访问层),依赖于JDBC并简化了JDBC的操作,拓展了JDBC的功能。

  1. 对JDBC的简化:使用了xml配置文件,一次配置可以持续使用,而且由于配置在Java代码外,可以十分方便的进行动态改变,使更换数据库可以对整个系统产生最小的影响。除此之外,Mybatis自带了连接池,减少了代码量而又可以更快更有效的实现连接。
  2. 对JDBC的拓展:以Mybatis所带的缓存功能为例,Mybatis自带缓存,可以实现基础的缓存功能,提高访问效率,而且还可以很好的与如Ehcache等缓存框架配合,提高服务器性能。

Mybatis使用流程

首先值得一提的是,在学习Mybatis框架的时候,我切实意识到帮助文档对于框架学习的重要作用,帮助文档中拥有着对框架最权威,最全面,最详细的描述和解释,学会使用,并善于使用帮助文档是十分重要且十分必要的事情!本文所述内容有限,也希望读者们能够多多配合帮助文档使用,效果更佳。
我所用的IDE工具是Eclipse,别的开发工具使用也类似,可以根据本文进行摸索尝试。
以下为Mybatis的使用流程:

下载jar包

如果已经学会了maven的使用,可以直接进行依赖,如果还不会maven,可以登录Mybatis官网下载,在此我比较推荐从官网下载,不仅可以下载jar包,还可以下载帮助文档,尝试去看一看帮助文档,帮助更好学习。
Mybatis官网链接

导入jar包,配置文件

Mybatis框架的使用,需要利用一些.xml文件来进行配置。这些配置文件的作用,就是将原来需要写在Java内部的代码,变成了写在Java外部一个.xml的配置文件内,只需要在Java内部进行调用就可以。一方面,可以简化代码,另一方面为“逆向工程”提供可能性。逆向工程在扩展内容中有详细讲解。
导入jar包就是将jar包放入项目中并构建jar包的路径。
首先要明确一点,Mybatis和Java的结合,还是要通过生成对象,然后调用方法来实现的。而生成的这个对象,是SqlSessionFactory对象,配置文件的一切配置,都是为这个对象服务的,对SqlSessionFactory的核心参数进行赋值等。大体上包含了数据源、连接池以及事物管理机制。还包括对Mapper.xml文件的连接。而Mapper.xml文件是干什么的,有什么用,见下文。
另外值得注意的一点是,对.xml文件中命名空间(namespace)的作用要了解。namespace就是对.xml文件中的标签进行约束的一套文件,可以帮助我们更规范的写出配置文件。
除了通过配置文件来帮助生成SqlSessionFactory之外,也还可以通过在Java中直接用代码来为SqlSessionFactory的各个参数赋值,这种配置方法也是spring整合Mybatis的基础。
在生成SqlSessionFactory之后,就可以通过这个工厂来生成SqlSession了,这样就可以实现对接口的调用了。
在此我又领悟到了工厂类的作用。工厂类一般会有很多个参数,通过对这些参数进行赋值,就可以通过这些参数生成一个个符合这些参数的实例了。

设置接口

当配置工作完成之后,就要根据业务需求来设置接口了,常见的比如有查询所有用户的接口如下:

public List< User > selAllUser();

配置*Mapper.xml文件

当接口设置完毕之后,就要设置对应的Mapper文件了,这个文件中配置的内容,通过SqlSessionFactory工厂加工后,相当于是生成了接口的一个实现类。

service层调用接口

在service层中对接口进行调用,可以通过流文件读取.xml文件来创建SqlSessionFactory,也可以通过Java代码为工厂赋值以实现SqlSessionFactory的创建,通过SqlSessionFactory来生成sqlsession,利用sqlsession来调用接口中提供的方法以实现业务功能。

最后

最后记得关闭流,包括读取.xml文件需要的文件流,也包括sqlsession。

Mybatis进阶内容

以上是Mybatis的基本内容,除此之外还有如下很多额外的功能,合理运用可以大大提高开发效率和运行效率

动态SQL语句

动态SQL语句是用在Mapper文件中的,可以将很多重复性代码简化掉,比如我们在查询的时候,可能会通过A这一个字段来查询,也可能通过A,B这两个字段来查询,或者通过A,B,C这三个字段来查询,也可能更多,我们会发现,这些查询语句写出来,只有WHERE后的判断条件不同,其余地方都是相同的,就可以利用动态SQL语句来帮助完成这些重复部分。

缓存

缓存机制主要是用来帮助提高数据库访问效率的。所谓缓存,就是将本来存储在硬盘上的数据库中的数据读取到内存中一部分,这样下一次再访问相同资源的时候,就可以直接在内存中读取,而不需要再次到硬盘上查找。
在Mybatis中提供了一级缓存和二级缓存。其中一级缓存比较鸡肋,往往产生脏读现象。二级缓存,或者配合别的缓存框架使用,才比较具有实用性。

逆向工程

所谓逆向工程,就是通过这样一种工程实现将数据库中的表映射成为Java中的类,将数据库中的字段,映射成为该类中的属性。逆向工程的使用,首先要导入jar包,generator包。
导入jar包的时候,要记得一般要新建一个新的项目,在这个新的项目中导入,这样最后生成的Java实体类文件就没有覆盖风险了。
导入jar包之后,下一步就是写配置文件了,配置文件的命名没有什么要求,可以随意起名字。
配置文件中,可以配置包括生成的实体类是否需要注释,连接池的信息,设置将数据库中的NUMBER类型映射为Java实体类中的INTEGER类型等。更重要的是设置生成实体类的位置,生成mapper文件的位置,mapper接口生成的位置等。
这一切设置好之后,就需要运行程序来调用逆向工程的一系列方法,从而实现实体类,mapper文件等的生成。
而如果使用maven方式进行逆向工程,也可以使用插件直接执行逆向工程的命令。
逆向工程类似于一个外包团队,将简单的代码交给逆向工程来实现,大大提升开发效率。

其它

不知道你们注意到没有,本文标题是“一篇文章搞不懂“这是真的,要是一篇文章能搞懂,那这门技术可就不值钱了!世上无难事,只怕有心人。要坚持多看几篇啊!
代码,配置文件等具体细节,都没有在本文中提到,主要是因为我还没有想好应该如何插入这些具体的代码。我创作本文的目的,是为了厘清思路,因为我发现初学编程的时候,往往都是两眼一抹黑,老师讲啥我听啥,完全不是到我学的到底是什么东西,学这个有什么用处,这篇文章算是抛砖引玉,希望能启发大家的思路,学的时候多想一想我究竟是在学什么,为什么要学这个,我学会这个之后可以干什么,有没有别的什么方法也可以干成这件事。当然,我也会在之后陆陆续续把文中的细节补上,不断编辑,争取将原理理解得更加透彻,讲解的更加透彻,分享让我们共同成长。
我在写这篇文章的时候,就在想,什么是编程,什么是工程师,什么是程序员,而我又要成为哪一种人,我要向哪一种职业方向发展?
我觉得Java工程师,其实本质上就是工程师而已,只是别的比如航天工程师,建筑工程师,水利工程师,电力工程师是在搞一些看得见摸得着的东西,而Java工程师,或者更广泛来说,软件工程师是在搞一项看得见但是摸不着的工程罢了。而程序员呢?其实是更加高端的,他们才是引领世界的,是创造高端科技的,是极客,是新技术的创造者,他们才是真正的程序员,而软件工程师,只是比较熟练的运用工具罢了,创造性并不是很强。而一些新人(包括我自己),不过是“码农”罢了。
在此,我立志,我现在,要努力学好SSM框架,让自己变成一个初级工程师,能够搭建出来一些简单的系统,并在此基础上不断学习,逐步晋升成为中级,高级工程师,在此过程中,我愿学习更多的计算机知识,算法知识,努力去创造新技术,或者至少改进当前技术点,为科技推动世界发展贡献自己的一份力量。努力从一只“码农”成长为“程序员”!
加油!看到这篇文章的你!与君共勉!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值