MyBatis的原理

MyBatis是一款常用的持久层框架,它支持定制化的SQL、存储过程以及高映射。MyBatis封装了JDBC的代码,可以简单的使用XML或注解来配置和映射原生信息,将接口和Java的普通对象映射成数据库中的记录。
MyBatis的原理:通过Resource加载mapper.xml,生成一个inputstream的输入流,创建SqlSessionFactoryBuilder对象,通过该对象的Builder(inputstream)方法,返回一个SqlSessionFactory对象,由SqlSessionFactory对象生成SqlSession,通过Statement id 找到对应的Statement,通过传入的参数进行一系列的复杂的判断生成要执行的SQL,通过JDBC执行SQL,把执行的结果封装成map、list等集合返回。
MyBatis的核心类:
SqlSessionFactory:每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为中心的。SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder获得,而SqlSessionFactoryBuilder可以通过XML配置文件或者通过Java的方式构建出SqlSessionFactory的实例。
SqlSessionFactory的实例一旦被创建就存在于应用的运行期间,所以建议使用使用单例模式或者静态单例模式。一个SqlSessionFactory对应配置文件中的一个全局环境(environment)。如果需要使用多个数据库,则就配置对应的SqlSessionFactory实例。
SqlSession:SqlSession是一个接口,它具有两个实现类,分别是DefaultSqlSession(默认使用)和SqlSessionManager。
SqlSession通过内部存放的执行器(Executor)来对数据进行CRUD操作。此外SqlSession不是线程安全的,因为每次操作完数据后都要调用close方法对其进行关闭,官方建议通过try-finally来保证总是关闭SqlSession。
Executor:Executor(执行器)接口有两个实现类,其中BaseExxcutor有三个继承类,分别是BatchExecutor(重用语句并执行批量更新),ReuseExecutor(重用预处理语句perparedstatements),SimpleExecutor(普通执行器)。
MyBatis在设计Executor上使用了装饰着模式,我们可以用CachingExecutor来装饰前面三个执行器目的就是用来实现缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值