基于框架源码纯手写高仿MyBatisPlus框架

编程入门 行业动态 更新时间:2024-10-07 17:30:38

基于<a href=https://www.elefans.com/category/jswz/34/1770644.html style=框架源码纯手写高仿MyBatisPlus框架"/>

基于框架源码纯手写高仿MyBatisPlus框架

作者:田超凡

版权所有,转载请注明原作者,仿冒侵权必究法律责任

1 MyBatisPlus简介

MyBatisPlus是一款基于MyBatis2.0封装的纯注解驱动框架,将传统MyBatis中的SQL映射文件去除,对各类持久化操作方法封装成各类注解,只需要把注解标注到对应Mapper映射器接口中的持久化方法上即可,在注解中定义SQL语句

MyBatisPlus优点:去除了xml Mapper映射文件,节省资源和硬盘占用率,SQL配置简单快捷,直接在映射器接口方法上定义即可实现绑定

MyBatisPlus缺点:可读性差,难以维护,不适用于复杂SQL和多参注入的情况,对于长SQL和参数比较多、参数类型复杂的SQL无法保证执行效率且可读性很差,因为MyBatisPlus底层是基于动态代理和反射reflect技术去解析SQL的,在解析注解值的时候会把SQL暂存到内存中,消耗内存资源。

2 MyBatisPlus源码手写实现思路

这里实现了一个简易版的MyBatisPlus,只针对DQL查询语句进行了UT,其它类型的DML操作待完善和Full Test

maven依赖配置:

pom.xml只配置ORM框架必备的Apache commons-lang、commons-collection工具包、解析XML文件的DOM4J,MySQL的JDBC驱动(注意检查Version是否和MySQL服务器版本一致,否则可能出现TraisientConnectionError等类似错误)

不要引入其他ORM框架依赖包,我们是自己手写ORM框架注解驱动版

核心思想:代理设计模式、动态代理、单例模式、工厂模式、遵循SOLID原则、反射技术

实现思路:

1 基本工作准备:

(1) 定义mybatis-config.xml核心配置文件,配置数据源和扫描的映射器接口基准目录,即MapperScannerBasePackage

(2) 定义POJO和Mapper接口

2 定义MyBatisPlus核心组件:

(1) 各类驱动注解Annotation

(2) 工具类ClassUtil解析和加载类到JVM,MyBatisDBUtil封装常见JDBC操作,StringUtil字符串工具类,XMLFileResolver XML文件解析器,基于DOM4J解析

(3) 封装模型Model:Configuration存放解析的MyBatis配置和Mapper配置(dataSource/mapperLocation/mapperRegistry)、DataSource数据源相关配置、MappedStatement扫描的SQL语句相关配置

(4) BaseBuilder和XMLConfigBuilder构造器,对解析的XML文件进行二次加工,解析配置信息并封装为Configuration

(5) Executor和SimpleExecutor封装具体的JDBC操作,Executor处理一级缓存实现逻辑,优化点:线程安全问题和内存资源占用问题,缓存命中率问题,SimpleExecutor调用MyBatisDBUtil实现具体的JDBC操作

(6) MapperProxy代理实例实现类,定义代理方法执行逻辑,MapperProxyFactory代理工厂,负责创建Mapper接口代理实例

(7) SqlSessionFactoryBuilder 解析XML配置文件,注册Mapper接口和代理实例,创建会话工厂

(8) SqlSessionFactory和DefaultSqlSessionFactory 全局唯一的单例会话工厂,关键点是安全的单例模式实现和创建会话

(9) SqlSession和DefaultSqlSession封装常见的CRUD操作,关键点是注入不同类型的Executor以实现具体的JDBC持久化方法操作策略、创建并获取Mapper接口的JDK动态代理实例

(10) MyBatisPlusTest测试类,编写UT代码进行功能测试,UT代码参照MyBatis启动代码编写

版权所有,转载请注明原作者,仿冒侵权必究法律责任

更多推荐

基于框架源码纯手写高仿MyBatisPlus框架

本文发布于:2024-02-28 12:14:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769204.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:框架   源码   MyBatisPlus

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!