一种支持mybatis映射范型类的方法和装置制造方法及图纸

技术编号:38436378 阅读:7 留言:0更新日期:2023-08-11 14:21
本发明专利技术公开了一种支持mybatis映射范型类的方法和装置。方法包括:一、开发人员定义一个范型基类。然后继承此基类按照列的数量统一定义映射实体类;二、按照业务构建Mybatis的动态SQL,resultType指向第一步定义的范型类基类;三、构建Mybaits的ReultSetHandle插件,在生成查询结果集进行对象映射时,替换默认结果转换组件,根据返回数据列和类型,按照列的数量多少,以构造函数调用方式生成范型类对象,支持对象列按映射类型操作;四、在Mybaits中加载ReultSetHandle插件,对应对象返回范型列表对象;五、编写代码,通过范型基础类直接进行对象属性的获取和范型类与实例的创建。本发明专利技术由3个模块构成Jar包装置,使用后大幅减少相似代码的编写,便于缩短开发时间,提高开发的效率、灵活性和质量。灵活性和质量。灵活性和质量。

【技术实现步骤摘要】
一种支持mybatis映射范型类的方法和装置


[0001]本专利技术涉及软件开发
,具体涉及一种mybatis映射范型类的方法和装置。

技术介绍

[0002]MyBatis本是apache的一个开源项目,是一个基于Java的持久层框架,支持定动态SQL查询;JDK 1.5后增加了泛型支持,是一种"参数化"类与属性定义的方式,范型使用在很大的程度上会减少重复代码的编写,提高代码的可维护性,而MyBatis的映射不支持范型类,在日常的开发工作中,存在较多动态SQL查询的开发需要,一般mybatis需要为每个SQL查询定义一个边界实体类进行映射,考虑不同列数和类属性类型的差异,随着动态SQL的增加,需要定义的边界实体类同步增加,类或者属性的一点差异,就要增加一个实体类,工作量大、维护性差、复用率较低。

技术实现思路

[0003]本专利技术解决的技术问题是:提供一种支持mybatis映射范型类的方法和装置,解决在一般开发中重复定义查询边界类,增加工作量的问题。
[0004]一种支持mybatis映射范型类的方法,其步骤如下:所述方法定义通用范型类,以插件方式加载ResultSetHandle实现类进行转换的过程;第一步,开发人员定义一个范型基类,并且继承此基类按照列的数量统一定义映射实体类,支持2

20个列的类对象,每个列命名为col**,其中**为列的顺序号,列的数据类型采用范型方式定义;第二步,按照业务构建Mybatis的动态SQL,resultType指向第一步定义的范型类基类,运行时按SQL的输出列数量和类型匹配;第三步,构建Mybaits的ReultSetHandle插件,在生成查询结果集进行对象映射时,替换默认结果转换组件,根据返回数据列和类型,先生成类实例,按照列的数量多少,以构造函数调用方式生成范型类对象返回,实现对象列按映射类型操作;第四步,在Mybaits配置文件中加载ReultSetHandle插件,在运行至数据库数据向对象转换时,发现是范型基类为输出类型,则进入转换逻辑,生成范型对象并且返回;第五步,开发者调用通过强制类型转换,或者通过范型基础类直接进行对象属性的获取;或者根据反射表达式获取数据,或者通过通用方法获取数据。
[0005]进一步地,如果需要自定义特殊范型类,可以自行定义,在插件中通过标签命名进行区分,并且在转换时进行匹配,能实现功能扩展。
[0006]第二方面,本专利技术提供一种支持mybatis映射范型类的装置,包括如下几个模块:类定义模块,该模块以范型方式定义了2

20个列的范型类,以边界类的形式呈现,每个属性的类型以模版方式定义,所有类继承一个基类,基类中实现通用属性操作方法,实现通用方法的数据访问;
插件转换模块,实现ResultSetHandler接口,获取动态SQL的编号,在首次访问时按照访问SQL的编号生成动态类,该类的列数以SQL的输出列对应,每个列按照数据类型进行适配,另外以单例方式保存至内存,以便下次使用。完成类创建后创建类的实例,并且将SQL输出列的顺序进行赋值;插件加载模块,按照Mybaits的配置要求,将上述插件通过配置进行加载,在程序运行时,转换模块得以启用。
[0007]因此,本专利技术提供了一种支持mybatis映射范型类的方法和装置,以Jar包方式引入和加载后,使得开发者不用撰写动态SQL的边界实体类,即可按范型类进行操作。该装置自动按照动态的SQL定义输出对象实体,开发者直接使用,该方法减少了代码量,统一了开发方法,提高了代码的可读性和规范性,提升了复用能力,为所属领域技术人员极大的降低了工作量,能有力地提升开发的工作效率和质量。
附图说明
[0008]图1为本专利技术实施一种mybatis映射范型类的方法流程图;图2为本专利技术实施一种mybatis映射范型类的装置示意图。
具体实施方式
[0009]如图1为本专利技术实施例提供的一种mybatis映射范型类的方法,所述方法定义通用范型类,以插件方式加载ResultSetHandle实现类进行转换的过程;第一步,开发人员定义一个范型基类,并且继承此基类按照列的数量统一定义映射实体类,支持2

20个列的类对象,每个列命名为col**,其中**为列的顺序号,列的数据类型采用范型方式定义;第二步,按照业务构建Mybatis的动态SQL,resultType指向第一步定义的范型类基类,运行时按SQL的输出列数量和类型匹配;第三步,构建Mybaits的ReultSetHandle插件,在生成查询结果集进行对象映射时,替换默认结果转换组件,根据返回数据列和类型,先生成类实例,按照列的数量多少,以构造函数调用方式生成范型类对象返回,实现对象列按映射类型操作;第四步,在Mybaits配置文件中加载ReultSetHandle插件,在运行至数据库数据向对象转换时,发现是范型基类为输出类型,则进入转换逻辑,生成范型对象并且返回;第五步,开发者调用通过强制类型转换,或者通过范型基础类直接进行对象属性的获取;或者根据反射表达式获取数据,或者通过通用方法获取数据。
[0010]步骤S101,实现ResultSetHandle后,通过mybatis框架配置并启动后,进入实现的插件拦截器。
[0011]步骤S102,根据resultType的类型和动态SQL的命名规范,判断属于查询范型类的输出类型,则进行输出类转换的处理,否则以mybatis默认处理方法执行。
[0012]步骤S103,按照动态SQL的命名,检查当前SQL是否首次执行,要是已经执行过,则进入S107步骤,否则选择S104步骤执行。
[0013]步骤S104,通过JDBC的执行结果描述,获取SQL语句执行的字段名称与数据类型以及总行数。
[0014]步骤S105,匹配返回行数、每个列的数据类型,按类型的范型定义生成范型类,并且生成类的实例。
[0015]步骤S106,以查询语句编号为识别键值,以单例方式保存至内存,在二次访问是从内存中获取类实例,直接使用。
[0016]步骤S107,从内存中获取类实例对象,调用创建函数,生成范型类的对象。
[0017]步骤S108,从SQL语句的查询中获取ResultSet对象,按照SQL的列选择顺序,给范型类的对象赋值并返回,实现动态类对象输出。
[0018]进一步地,如果需要自定义特殊范型类,可以自行定义,在插件中通过标签命名进行区分,并且在转换时进行匹配,能实现功能扩展。
[0019]参见图2所示,本专利技术所述的一种支持mybatis映射范型类的装置,包括如下几个模块:类定义模块,该模块以范型方式定义了2

20个列的范型类,以边界类的形式呈现,每个属性的类型以模版方式定义,所有类继承一个基类,基类中实现通用属性操作方法,实现通用方法的数据访问;插件转换模块,实现ResultSetHandler接口,获取动态SQL的编号,在首次访问时按照访本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种支持mybatis映射范型类的方法,其特征在于:所述方法定义通用范型类,以插件方式加载ResultSetHandle实现类进行转换的过程,所述方法包括以下步骤,第一步,开发人员定义一个范型基类,并且继承此基类按照列的数量统一定义映射实体类,支持2

20个列的类对象,每个列命名为col**,其中**为列的顺序号,列的数据类型采用范型方式定义;第二步,按照业务构建Mybatis的动态SQL,resultType指向第一步定义的范型类基类,运行时按SQL的输出列数量和类型匹配;第三步,构建Mybaits 的ReultSetHandle插件,在生成查询结果集进行对象映射时,替换默认结果转换组件,根据返回数据列和类型,先生成类实例,按照列的数量多少,以构造函数调用方式生成范型类对象返回,实现对象列按映射类型操作;第四步,在Mybaits配置文件中加载ReultSetHandle插件,在运行至数据库数据向对象转换时,发现是范型基类为输出类型,则进入转换逻辑,生成范型对象并且返回;第五步,开发者调用通过强制类型转换,或...

【专利技术属性】
技术研发人员:魏东仪王国安彭家彦陈强杨国平党旭
申请(专利权)人:兰州飞天网景信息产业有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1