栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LittleBatis:一个简单的半自动ORM框架的实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LittleBatis:一个简单的半自动ORM框架的实现

 自述

        在学习了《Spring 5 核心原理与 20个类手写实战》的ORM章节中,我想自己写一个简单的ORM框架。前几章部分是按照Tom书中的代码搬到了编辑器中,对Spring的核心原理有了大致的了解。在我看完ORM部分时,我觉得代码有种太过枚举化,所以我想自己写一个半自动化的ORM,而不是书中的全自动化ORM,于是就有了这篇笔记。

        在这之前,我看过看过部分的MyBatis的源代码,但是没有太多的了解,我只是对其数据源(DataSource)部分有大致的阅读,本框架中简单的实现数据连接池部分。

        在编写的过程中,我体会到了TDD的魅力,指导着我完成这些功能。由于我的ORM参考了MyBatis的Mapper风格,就叫LittleBatis算了。

第零节 开发环境

        IDEA 2018 + Maven 3.6.1 + JDK 1.8.231 + Git。

第一节 目标描述

LittleBatis的目标比较简单,对一个基础数据表进行CRUD,返回的结果支持Map,List,Integer和一个普通对象就可以了,入参的话支持一个对象,或者是直接参数名称。主要是通过以下XML的验证。



    
        insert into USER(ID, NAME , PASSWORD) values(#{user.id},#{user.name}, #{user.password})
    
    
        update USER set NAME = #{user.name} , PASSWORD = #{user.password} where ID = #{user.id}
    

    
        delete from USER where ID = #{id}
    

    
        select * from USER
        where name = #{name}
    
第二节 步骤构思        

        对于第一节的用例,我按以下步骤拆分:

        第一步:我需要一个对数据连接池对Connection进行管理。

        第二步:我要用一个配置读取器读取到JDBC和Mapper存储信息。

        第三步:将扫描Mapper中的信息,将信息存储在Map中,生成对应的方法处理器。

        第四步:用JDK动态代理实现接口的代理。

        第五步:实现SQL入参处理器,执行SQL后的类型封装器。

        第六步:实现SQL的执行器。

        第七步:调试。

第三节 框架设计

图3.1 架构图

        LittleBatis的实现主要是图3.1中九个类组成。

        ConfigurationReader是读取database.properties配置的类。

        MapperMapping是代理Dao层接口的类,其中包含了各个方法的MethodHandler的Map。

        MapperReader是扫描Mapper.xml文件地址,并根据Mapper.xml的配置生成对应的MapperMapping和MethodMapping。

        ParameterHandler是处理Dao接口入参的类。

        MethodMapping是记录Mapper.xml的方法的配置信息。

        MethodHandler是方法处理器。

        ResultHandler是返回结果处理器,主要是类型转换。

        SQLHandler是SQL和SQL参数的处理,用于生成SQLRunner需要的SQLCommand。

        SQLRunner主要负责sql的执行,并返回结果。

第四节 编码实现

https://gitee.com/cisnotcpp/learining-orm

第五节 测试验证

        运行代码中的EnvironmentTest中的测试。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/295041.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号