解读Mybatis数据库开发框架

SSM开发框架的M就是Mybatis,Mybatis可以帮助开发人员更加方便地操作数据库,减少开发人员在数据库操作方面的编码工作量。下图是集成到Spring框架的Mybatis技术架构图。

图 1 集成到Spring框架的MyBaits技术

上图是集成到Spring框架的MyBaits技术架构图。架构图分为两部分:虚线框外的是Spring框架的业务逻辑处理类,它调用Mybatis的DAO接口发起对数据库的增删改查请求;虚线框内的是Mybatis框架部分,这部分包括DAO接口、DAO接口实现类Mapper、POJO实体类、SQL执行Executor类、SqlSession类。

一个用户登录业务访问数据库流程如下:用户通过JSP填写登录账号和密码后,JSP会发送登录请求到指定的Controller类,Controller类收到请求后,会调用登录业务类(Service类),登录业务类调用DAO类的登录接口,因为该接口被Mapper类实现,因此Mapper类的登录SQL代码会被执行,真正执行SQL代码的是Executor类,它创建SqlSession对象,由SqlSession对象访问数据库的用户表,并将访问结果返回给Mapper,Mapper类会根据接口的返回类型返回数据到登录业务类。

DAO接口声明了访问数据库的具体操作方法,在不对外暴露数据库访问细节的前提下提供数据库的增删改查方法,它不负责增删改查方法的具体实现,方法的具体实现由Mapper负责。这样做的好处时当数据库访问细节发生变化时,不会影响到业务逻辑类的改动。例如,当数据库访问细节发生变化时,只需修改Mapper代码就可以了,而Mapper代码是XML文件,因此无需重新编译整个系统。假如实现细节放在DAO类中,就需要修改DAO类的代码,修改DAO类的代码显然会影响到Service类的代码,即使没有影响,也需要重新编译整个系统。DAO接口由MyBaits自动生成,无需手动编写DAO接口代码。

Mapper是DAO的实现类,Mapper不是Java类,而是一个XML文件,访问数据库的SQL语句都是在Mapper中实现的,这些Mapper代码不需要你手动编写,完全由MyBaits自动生成。

POJO是实体类,主要是需要数据传递和序列化的类。例如与数据库表对应的Java类。POJO类也不需要手动编写代码,POJO类完全由MyBaits自动生成。

Exectuor类是执行SQL语句的类,Mapper所有的SQL语句都通过Exectuor类来执行,Exectuor类会创建一个SqlSession完成对数据库的操作。

Mybatis简单体现在开发人员建立数据库后,可以使用Mybatis自身提供的插件自动生成上图虚线框中的DAO接口类、Mapper实现类、POJO实体类的代码,开发人员不需要手动编写这些代码。只有在特殊SQL查询需求的情况下,才会扩展这些代码。下图是Mybatis代码自动生成原理图。

图2 Mybaits代码自动生成原理图

Mybatis代码自动生成插件需要从配置文件中读取数据库的访问地址、登录账号和密码,还需要从配置文件中读取数据库的哪些表需要生成POJO类、DAO接口类和Mapper实现类,以及这些类存储到什么位置。

图 3 Mybaits代码自动生成配置文件

前面介绍了Mybatis的框架结构和数据库操作代码自动生成机制,了解了Mybatis和Spring框架的集成。在后面的人脉系统设计中,我们会用到这些知识。

发布了118 篇原创文章 · 获赞 157 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/smilejiasmile/article/details/104620515
今日推荐