一种基于Spring和MyBatis数据处理的方法技术

技术编号:37842718 阅读:14 留言:0更新日期:2023-06-14 09:47
本发明专利技术公开了一种基于Spring和MyBatis数据处理的方法,该方法包括以下步骤:开发二方库,新增四个Java注解,新增一个注解处理器;将二方库导入数据库应用中,新建一个DbMapper接口类,为相关的数据库表创建对应的实体类;数据库应用中新增数据库服务接口类及数据库服务实现类,利用Java反射机制获取对应的增删改方法,达到执行实际的数据库操作的效果。本发明专利技术在编译阶段,通过Java插入式注解处理器解析特定注解,为Mapper接口类自动生成对应的抽象方法;在运行阶段,通过Java反射机制调用Mapper对应的方法完成数据库单表的增删改操作,极大减少了源代码文件的数量,极大提升了开发效率。开发效率。

【技术实现步骤摘要】
一种基于Spring和MyBatis数据处理的方法


[0001]本专利技术涉及软件开发研究领域,具体涉及一种基于Spring和MyBatis数据处理的方法。

技术介绍

[0002]随着互联网的普及和发展,Java语言因其简单、面向对象编程思想、平台无关系等特点,成为了最流行的编程语言之一。Spring框架由于其IoC(依赖注入)和AOP(面向切面)的特点,极大的简化了企业级应用的开发,成为了最热门的Java开发框架,大量的应用基于Spring框架完成开发。MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,大量的数据库应用基于MyBatis开发。对于一个数据库应用而言,数据库单表增删改的操作是必须的,随着系统越来越庞大,系统涉及的数据库表越来越多,对大量表增加增删改的操作工作量是巨大的。
[0003]基于MyBatis开发的数据库应用,为了实现单表的增删改,一般有以下两种方案。一种是MyBatis传统的方式,即为每一张数据库表的Mapper接口类增加对应的增删改抽象方法、然后在对应映射的xml文件中写SQL语句,这种方案非常繁琐且开发工作量大。二是在传统的方式基础上增加自动化代码生成的方式,如MyBatis

Generator代码生成框架,一般而言,对于一张数据库表至少生成三个文件(实体类、Mapper接口类、Xml文件),对于一个涉及几百张表的数据库应用而言,生成的文件数量是非常的多,后续文件的检索也相对麻烦。

技术实现思路

[0004]为了克服现有技术的不足,本专利技术在编译阶段,通过Java插入式注解处理器解析特定注解,为MyBatis框架的Mapper接口类自动生成对应的抽象方法;在运行阶段,通过Java反射机制调用MyBatis框架的Mapper对应的方法完成数据库单表的增删改操作,极大减少了源代码文件的数量,极大提升了开发效率。技术方案如下:本专利技术提供了一种基于Spring和MyBatis数据处理的方法,该方法包括如下步骤:步骤1,开发二方库,新增四个Java注解:DBTable、DBField、DBKey、EnhancedMapper;新增一个继承javax.annotation.processing.AbstractProcessor的注解处理器DbTableProcessor,通过Java注解SupportedAnnotationTypes声明仅支持处理Java注解DbTable,修改META

INF/javax.annotation.processing.Processor的SPI文件内容为注解处理器DbTableProcessor的全路径名。
[0005]优选的,所述Java注解DBTable包含一个name属性,用于标识实体类对应数据库表名。
[0006]优选的,所述Java注解DBField包含一个name属性,用于标识实体类属性对应数据库表的列名。
[0007]优选的,所述Java注解DBKey,用于标识实体类属性为对应数据库表自增的主键。
[0008]优选的,所述Java注解EnhancedMapper,用于标识接口类为需要进行增强的
Mapper接口类。
[0009]优选的,所述注解处理器DbTableProcessor,覆写javax.annotation.processing.AbstractProcessor类的init和process方法,用于在代码编译阶段,获取带有Java注解DBTable的实体类,解析对应实体类中Java注解DBField、DBKey的信息,并修改带有Java注解EnhancedMapper的接口类的语法树。带有Java注解EnhancedMapper的接口类的语法树新增MyBatis框架org.apache.ibatis.annotations包下所有类的导入语法树节点(JCImport),对于每一个带有Java注解DBTable的实体类,则生成增删改三个方法定义语法树节点(JCMethodDecl)、实体类导入语法树节点(JCImport)。对于增删改三个方法定义语法树节点,方法名称分别为insertXxx、deleteXxx、updateXxx(Xxx为实体类名),三个方法的参数一致,形式参数为实体类、实参名称为xxx(即实体类名首字母小写),并分别生成MyBatis框架的Insert、Delete、Update注解语法树节点,注解内容为根据Java注解DBTable、DBField、DBKey等信息拼接而成的动态SQL语句,即对应MyBatis框架Mapper的SQL语句。
[0010]步骤2,将步骤1开发的二方库导入数据库应用中,新建一个DbMapper接口类,并加上Java注解EnhancedMapper;为相关的数据库表创建对应的实体类,实体类上加上Java注解DBTable并填写对应数据库表名、实体类属性上加上Java注解DbField并填写数据库表对应的列名。
[0011]步骤3,数据库应用中新增数据库服务接口类DbService及数据库服务实现类DbServiceImpl,包含insert、delete、update三个方法,方法形式参数类型都为Object;数据库服务实现类DbServiceImpl注入步骤2的DbMapper接口类,insert、delete、update方法根据传入参数的类名,利用Java反射机制获取对应insertXxx、deleteXxx、updateXxx的方法Method对象M,然后Method对象M执行invoke方法(带入DbMapper接口类对象、请求参数对象两个参数),达到执行实际的数据库操作的效果。
[0012]与现有技术相比,上述技术方案中的一个技术方案具有如下有益效果:通过Java插入式注解处理器、Java反射、动态代理和Spring容器等技术,对于一张数据库表而言,仅需开发一个实体类并增加对应的注解,即可完成单表的增删改功能的开发,极大减少了单表操作相关的开发工作量和源代码文件数量,极大提升了开发效率。
具体实施方式
[0013]为了阐明本专利技术的技术方案和工作原理,下面将对本公开实施方式做进一步的详细描述。上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
[0014]本申请的说明书和权利要求书中的术语“步骤1”、“步骤2”、“步骤3”等类似描述是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里描述的那些以外的顺序实施。
[0015]本公开实施例提供了一种基于Spring和MyBatis数据处理的方法,该方法包括如下步骤:步骤1,开发二方库(公司内部Java依赖库),新增四个Java注解:DBTable、
DBField、DBKey、EnhancedMapper;新增一个继承javax.annotation本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spring和MyBatis数据处理的方法,其特征在于,该方法包括如下步骤:步骤1,开发二方库,新增四个Java注解:DBTable、DBField、DBKey、EnhancedMapper;新增一个继承javax.annotation.processing.AbstractProcessor的注解处理器DbTableProcessor,通过Java注解SupportedAnnotationTypes声明仅支持处理Java注解DbTable,修改META

INF/javax.annotation.processing.Processor的SPI文件内容为注解处理器DbTableProcessor的全路径名;步骤2,将二方库导入数据库应用中,新建一个DbMapper接口类,并加上Java注解EnhancedMapper;为相关的数据库表创建对应的实体类,实体类上加上Java注解DBTable并填写对应数据库表名、实体类属性上加上Java注解DbField并填写数据库表对应的列名;步骤3,数据库应用中新增数据库服务接口类DbService及数据库服务实现类DbServiceImpl,包含insert、delete、update三个方法,方法形式参数类型都为Object;数据库服务实现类DbServiceImpl注入步骤2的DbMapper接口类,insert、delete、update方法根据传入参数的类名,利用Java反射机制获取对应insertXxx、deleteXxx、updateXxx的方法Method对象M,然后Method对象M执行invoke方法(带入DbMapper接口类对象、请求参数对象两个参数),达到执行实际的数据库操作的效果。2.根据权利要求1所述的一种基于Spring和MyBatis数据处理的方法,其特征在于,所述Java注解DBTable包含一个name属性,用于标识实体类对应数据库表名。3.根据权利要求1所述的一种基于Spring和...

【专利技术属性】
技术研发人员:周金明陆富迭
申请(专利权)人:南京行者易智能交通科技有限公司
类型:发明
国别省市:

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

1