MyBatis框架之入门篇

本文深入剖析Mybatis的工作原理,包括如何通过SqlSessionFactoryBuilder解析mybatis-config.xml,获取SqlSession的流程,以及如何通过MapperProxy获取和执行定制化SQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Mybatis的介绍

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。

MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、代码解析

主要的4个功能

1、将路径下的资源读取到流中

   通过getResourceAsStream  读取资源文件 ,在读取的过程中 调用 classLoaderWrapper中的方法,然后通过对classLoader[]数组的遍历 ,然后进行判断 类加载器中所读的流是否为null,如果不为null 则返回InputStream对象

注解:getResourceAsStream方法的用法理解 :http://t.csdn.cn/lRAdu 

重点!,获取核心对象的方式

SqlSessionFactoryBuilder构建 SqlsessionFactory实例,通过build()方法解析mybatis-config.xml文件,解析到的文件内容套接到Configuration中,而这个configuration 相当于 mybatis-config.xml 中的类然(如图)的配置文件每一个详细信息所对应后。返回给SqlsessionFactory对象。

Configuration

 

获取SQLsession对象

作用:它是一个面向程序员的接口,程序员通过该接口可以对数据库进行增删改查方法,该接口有一个默认的实现:DefaultSqlSession o

通过DefaultSqlSessionFactory对象调用它里面opensession方法返回DefaultSQLSession对象

调用的是DefaultSqlSessionFactory类中opensessionFromDataSource

opensessionFromDataSource方法

 该方法下有三个参数 第一个的类型  第二个 事务的隔离级别 第三个 是否自动提交


 

通过sqlsession获取相应Mapper

   第一层通过调用sqlsession中getMapper方法

   第二层通过调用配置中的getMapper方法

   第三层通过映射的注册器中的getMapper方法来进行获取相应的Mapper对象

其中使用了MapperProxyFactory 工厂对象来获取 MapperProxy 在里面使用反射和动态代理的方式来获取最终的mapper对象。


————————————————
 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值