一种模型驱动的数据库应用的实现方法技术

技术编号:39242159 阅读:8 留言:0更新日期:2023-10-30 11:54
本发明专利技术公开了一种模型驱动的数据库应用的实现方法,属于数据库开发领域,包括根据数据库表自动生成特定实体模型代码的能力,并能根据实体模型动态拼装执行常规的数据增删改查的SQL操作;以及自动注册发布供外部请求的API接口restful服务,解决了只需通过连接数据源,使用代码生成器生成特定的数据表实体模型代码,即可完成了常见增删改查基础API能力的构造,支持配置主子表关联关系以实现级联操作,同时也为复杂业务逻辑预留必要的扩展接口的技术问题,极大的简化的后端程序的开发工作量,提高了项目研发效率。适用于绝大部分数据库应用系统的开发过程,是一种简洁高效低代码编程解决方案。编程解决方案。编程解决方案。

【技术实现步骤摘要】
一种模型驱动的数据库应用的实现方法


[0001]本专利技术属于数据库开发领域,涉及一种模型驱动的数据库应用的实现方法。

技术介绍

[0002]在数据库应用系统开发中,存在大量的增删改查操作,以及相对应的SQL语句和Controller控制层的相应API方法,且对项目开发人员的SQL能力也有较高要求。
[0003]以Java领域为例,为简化开发,也涌现出一些像Hibernate等全自动的ORM框架,减少了大量SQL语句的编写。
[0004]然而这类ORM框架也仅仅只是解决了DAO的SQL编写的问题,且在实际使用中并不够灵活。

技术实现思路

[0005]本专利技术的目的是提供一种模型驱动的数据库应用的实现方法,解决了只需通过连接数据源,使用代码生成器生成特定的数据表实体模型代码,即可完成了常见增删改查基础API能力的构造,支持配置主子表关联关系以实现级联操作,同时也为复杂业务逻辑预留必要的扩展接口的技术问题。
[0006]为实现上述目的,本专利技术采用如下技术方案:
[0007]一种模型驱动的数据库应用的实现方法,包括如下步骤:
[0008]步骤S1:建立一个定制化的数据表实体模型代码生成器,利用数据表实体模型代码生成器连接数据库对指定数据表生成特定的实体模型代码;
[0009]步骤S2:建立一个数据表实体模型管理器,利用数据表实体模型管理器实现模型的注册维护,并提供模型信息获取的方法;
[0010]步骤S3:建立一个数据表实体模型加载器,在项目启动时,利用数据表实体模型加载器扫描所有继承于特定基类的模型,注册到数据表实体模型管理器中;
[0011]步骤S4:建立SQL模板生成类,根据模型参数动态拼装符合MyBatis规范的SQL语句,并通过MyBatis提供的@XXXProvider注解接口注入模板类;
[0012]步骤S5:建立通用数据存储访问器,构建基于MyBatis的公共Mapper接口,用于提供增删改查方法;
[0013]步骤S6:构建多个模型请求处理器,分别用于处理增、删、改、查的操作,通过自定义注解申明方法请求路径;
[0014]步骤S7:建立一个全局请求处理分发器,将注册的所有数据表实体模型上申明的API请求路径、各种请求处理器申明的方法和请求路径组合写入SpringMVC的RequestMapping;
[0015]步骤S8:建立一个模型请求方法前后置扩展接口类,置入全局请求处理分发器内部。
[0016]优选的,在执行步骤S1时,具体采用JDBC技术和第三方模板引擎建立数据表实体
模型代码生成器。
[0017]优选的,在执行步骤S2时,实体模型管理器提供模型的注册,及模型实例化,模型对象、属性变量、对外API请求路径、数据库表名和字段的获取,使用全局静态Map来记录注册的实现模型数据,依托java自身提供的内省和反射技术实现模型信息的解析。
[0018]优选的,在执行步骤S4时,SQL模板生成类负责根据实体模型对象及相应的Mapper接口方法,拼装符合MyBatis的模板SQL,动态创建SqlMapper,最后使用MyBatis自身的SQL执行能力,实现JDBC连接数据库运行SQL语句。
[0019]优选的,在执行步骤S5时,MyBatis的数据库操作Mapper接口被注入到SQL模板类中。
[0020]本专利技术所述的一种模型驱动的数据库应用的实现方法,解决了只需通过连接数据源,使用代码生成器生成特定的数据表实体模型代码,即可完成了常见增删改查基础API能力的构造,支持配置主子表关联关系以实现级联操作,同时也为复杂业务逻辑预留必要的扩展接口的技术问题,本专利技术通过代码生成器,基于模板引擎技术,通过JDBC连接数据库,快速生成继承于特定基类的(如限定为DzhDomain)数据表实体模型。模型中申明了对应的数据库表名、各属性映射的数据库字段信息、以及主外键信息,还有将要发布的API请求路径等。尽可能的简化了特制的数据库表实体模型类的编码工作量,提升了开发效率,本专利技术实现了一个数据表实体模型管理器,用来统一管理运行态的实体模型。通过实体模型管理器,提供统一的实体模型管理调用入口,包括模型的注册,及模型实例化,模型对象、属性变量、对外API请求路径、数据库表名、字段等等系列信息的获取。为各种模型信息的调用提供统一便捷的使用方法,降低开发人员使用成本,本专利技术实现了一个通用的数据存储访问器,封装实体模型对应表的增删改查等数据访问能力。通过通用的数据存储访问器,实现针对继承于特定基类的(如限定为DzhDomain)数据表实体模型的各种常用增删改查操作的统一封装。内部通过实体模型和传入的模型对象参数动态的拼装SQL模板语句,并通过JDBC方式完成SQL语句的执行。本专利技术实现了全局的请求分发器,实现针对实体模型的各种增删改查请求API的发布,并预留了可扩展的前后置操作接口,以便开发人员进行复杂业务逻辑处理。通过全局的请求分发器,实现外部请求自动分发到对应的数据模型处理逻辑中,完成相关表的增删改查等数据库操作,将极大的简化了数据库应用系统中的大部分功能的开发工作,节约了研发成本,提升了开发效率。普遍适用于一般常见的数据库应用项目。
附图说明
[0021]图1为本专利技术的主流程图;
[0022]图2为本专利技术的基于模型驱动的数据库应用其开发和运行的两个具体过程的流程图。
具体实施方式
[0023]如图1和图2所示的一种模型驱动的数据库应用的实现方法,包括如下步骤:
[0024]步骤S1:建立一个定制化的数据表实体模型代码生成器,利用数据表实体模型代码生成器连接数据库对指定数据表生成特定的实体模型代码;具体采用JDBC技术和第三方模板引擎建立数据表实体模型代码生成器。
[0025]在本实施例中,通过JDBC连接数据源,获取数据库表及字段信息,通过模板引擎(velocity、freemarker等)技术,实现针对特定数据表生成相应的数据模型。在生成的实体模型类上,使用
[0026]@DzhTable(name="TAB_XXX")注解申明对应的数据库表名,使用
[0027]@DzhRequest(path="/xx/xxx")注解申明requestMapping请求路径;在类的属性变量上@DzhKey(type=IdType.AUTO)注解申明主键及主键值生成方式,使用@DzhColumn(name="XXX_ID")注解申明对应数据库表中字段名,使用@DzhForeignKey(name="XXX_ID",table="TAB_XXX")注解申明外键关联表名及字段名。
[0028]步骤S2:建立一个数据表实体模型管理器,利用数据表实体模型管理器实现模型的注册维护,并提供模型信息获取的方法;
[0029]实体模型管理器提供模型的注册,及模型实例化,模型对象、属性变量、对外API请求路径、数据库表名和字段的获取,以及结合模型对象参数动态的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模型驱动的数据库应用的实现方法,其特征在于:包括如下步骤:步骤S1:建立一个定制化的数据表实体模型代码生成器,利用数据表实体模型代码生成器连接数据库对指定数据表生成特定的实体模型代码;步骤S2:建立一个数据表实体模型管理器,利用数据表实体模型管理器实现模型的注册维护,并提供模型信息获取的方法;步骤S3:建立一个数据表实体模型加载器,在项目启动时,利用数据表实体模型加载器扫描所有继承于特定基类的模型,注册到数据表实体模型管理器中;步骤S4:建立SQL模板生成类,根据模型参数动态拼装符合MyBatis规范的SQL语句,并通过MyBatis提供的@XXXProvider注解接口注入模板类;步骤S5:建立通用数据存储访问器,构建基于MyBatis的公共Mapper接口,用于提供增删改查方法;步骤S6:构建多个模型请求处理器,分别用于处理增、删、改、查的操作,通过自定义注解申明方法请求路径;步骤S7:建立一个全局请求处理分发器,将注册的所有数据表实体模型上申明的API请求路径、各种请求处理器申明的方法和请求路径组合写入SpringMVC的RequestMapping;步骤S...

【专利技术属性】
技术研发人员:丁振华
申请(专利权)人:中博信息技术研究院有限公司
类型:发明
国别省市:

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

1