Java数据持久层 (2)

关键词:简单、原始、看不到
现在基本没有人直接使用了。大多使用框架。我在生产级的使用,还是刚工作的时候,在前端使用了类似的东东。

三、Mybatis 1.整体框架

在这里插入图片描述

对应模块:

接口层

SqlSession:应用程序与Mybatis的交互接口

核心处理层

配置解析:对Mybatis配置文件、映射文件,dao接口注解等进行配置解析,生成Configuration对象

SQL解析:MyBatis 实现动态SQL 语句的功能,并提供了诸如where等SQL语句节点

参数映射:根据实参,解析动态SQLL节点,生成可执行SQL语句,处理占位符,绑定实参

SQL执行:负责缓存,事务,JDBC等的调度。详见执行过程图

结果集映射:通过ResultSetHandler等,完成结果集的映射,得到结果对象并返回

插件:提供插件接口,便于用户扩展,甚至修改Mybatis默认行为

基础支持层

数据源模块:通过配置生成(可委托第三方数据源框架),包含目标数据库信息,向上支持连接生成等

事务管理模块:对数据库事务进行抽象,并提供简单实现。可与Spring集成,由Spring实现事务管理

缓存模块:为Mybatis的一二级缓存提供支持,从而优化数据库性能

Binding模块:实现DAO接口文件与对应映射文件的关联

反射模块:对Java原生反射进行了封装与优化

类型转换:一方面实现JavaType与JDBCType的转换,另一方面支撑Mybatis的别名机制

日志模块:提供详细日志输出信息,并能够集成第三方日志框架(log4j,sel4j等)

资源加载:封装Java原生类加载器,提供类与其他资源文件的有序加载能力

解析器模块:一方面封装XPath,提供xml配置文件解析能力,另一方面为动态Sql占位符的处理,提供支持

数据源模块补充:即常用组件-DataSource。MyBatis 自身提供了相应的数据源实现(Pooled,UnPooled,Jndi),MyBatis 也提供第三方数据源集成的接口()。现在开源的数据源都提供了比较丰富的功能,如连接池功能、检测连接状态等

@Select注解,就可以省略对应的映射文件节点

DAO接口的实现类,是由Mybatis自动创建的动态代理对象(依赖于对应的映射文件节点)

Mybatis初始化阶段:加载Mybatis配置文件、映射文件,dao接口注解->保存到configuration对象中->创建SqlSessionFactory对象。Mybatis初始化阶段后,开发者可以通过SqlSessionFactory,获取对应的SqlSession。wdk-som的数据库配置就是直接配置生成DataSource与SqlSessionFactory。

a.解析模块

Mybatis的配置,有三种途径:

XML:如Mybatis-config.xml

注解:如DAO接口方法上的@Select

注入:如MybatisConfiguration类

其中,XML是Mybatis配置的主要方式。XML配置则涉及XML文件解析。
XML常见解析方式,有一下三种:

DOM:前端小伙伴,不要太熟悉。DOM 是基于树形结构的XML 解析方式,它会将整个XML 文档读入内存并构建一个DOM树,基于这棵树形结构对各个节点( Node )进行操作。DOM 解析方式的优点是易于编程,可以根据需求在树形结构的各节点之间导航。DOM 解析方式的缺点是在XML文件较大时,会造成较大的资源占用(因为需要构建DOM树)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfjfp.html