CN107729561A - 基于数据库表结构反向生成对数据库表操作的方法 - Google Patents
基于数据库表结构反向生成对数据库表操作的方法 Download PDFInfo
- Publication number
- CN107729561A CN107729561A CN201711096443.5A CN201711096443A CN107729561A CN 107729561 A CN107729561 A CN 107729561A CN 201711096443 A CN201711096443 A CN 201711096443A CN 107729561 A CN107729561 A CN 107729561A
- Authority
- CN
- China
- Prior art keywords
- database table
- oracle database
- oracle
- files
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于数据库表结构反向生成对数据库表操作的方法,包括以下步骤:在数据库编辑器中创建Oracle数据库表,建立数据库表结构映射关系;查询并读取判断Oracle数据库表的信息;反向抽取所述Oracle数据库表的管理表,并将查询内容分别存储于管理器数据库表;循环查询管理器数据库表内存储的信息,提取并保存至定义的动态数组中,将动态数组中的数据组织成Java代码,生成包括两个DAO文件,两个TO文件,一个FROM文件以及一个VO文件,通过调用上述文件对数据库表的增加、删除、修改和查询。本发明具有操作代码标准统一,方便数据库操作和后期维护工作,减轻开发人员工作量,实现数据库快速编辑操作等优点,在数据库技术领域具有很高的实用价值和推广价值。
Description
技术领域
本发明涉及数据库技术领域,尤其是基于数据库表结构反向生成对数据库表操作的方法。
背景技术
随着计算机的发展,企业对数据库的依赖性越来越高,用户需求也在不断提高。为了满足业务逻辑和底层数据持久化交互的要求,必须对数据库操作代码进行统一性标准规范,以实现高效的对数据库进行增、删、改、查。目前,数据库操作一般采用第三方的java包或者自己编写数据库操作代码,其不足之处在于,采用java包操作数据库的引入配置信息较为繁琐。而采用编写数据操作代码的,因编写者技能水平差距影响,在编写时,容易造成代码不规范、耦合性能差等问题,使得数据量存在差异。因此,采用第三方java包和编写数据操作代码,不仅工作效率低,而且不便于后期维护。
综上,有必要提出一种实现数据库表结构反向生成对数据库表操作的方法,实现数据库表快速增、删、改、查功能,通过生成模块化的操作代码,以减少开发人员对数据库操作代码的编写工作,提高开发工作效率,减少开发人员底层操作代码编写工作量。
发明内容
本发明的目的在于提供一种基于数据库表结构反向生成对数据库表操作的方法,主要解决现有技术中存在的配置信息繁琐、编写代码不规范、耦合性能差、工作量大、代码编写效率低等问题。
为了实现上述目的,本发明采用的技术方案如下:
基于数据库表结构反向生成对数据库表操作的方法,包括以下步骤:
第一步,在数据库编辑器中创建Oracle数据库表,并建立Oracle数据库表结构映射关系;所述Oracle数据库表结构包括主键、外键、字段名称、字段类型和Oracle数据库表名称;所述Oracle数据库表设有数据存储的管理表;所述Oracle数据库表为三层体系结构,即表示层、中间层和数据层。
第二步,查询所述Oracle数据库表的信息,判定查询的信息是否存在主键,若是,则判定主键的类型是否正确,否则返回第一步继续修改;继续判定所述主键的类型是否正确,若是,则进入第三步,否则返回第一步继续修改。
第三步,查询所述Oracle数据库表的管理表,即在所述Oracle数据库表的管理表中查询Oracle数据库表名称、字段名称、字段类型、主键和外键,将查询的内容分别存储于管理器数据库表中,在管理器数据库表中建立代码包路径关系。查询具体如下:
(1)在所述Oracle数据库表的管理表user_tables中查询Oracle数据库表名称。
(2)在所述Oracle数据库表的管理表user_tab_columns中查询Oracle数据库表对应的字段名称和字段类型。
(3)在所述Oracle数据库表的管理表user_cons_columns和Oracle数据库表的管理表user_constraints中查询Oracle数据库表对应的主键。
(4)在所述Oracle数据库表的管理表user_constraints和Oracle数据库表的管理表user_cons_columns和Oracle数据库表的管理表user_cons_columns中查询Oracle数据库表对应的外键。
第四步,循环查询管理器数据库表内存储的信息,提取并保存至定义的动态数组中,将动态数组中的数据组织成Java代码,生成用于对Oracle数据库表操作的两个DAO文件,两个TO文件,一个FROM文件以及一个VO文件,下载并保存上述文件至管理器中。具体如下:
(1)循环查询管理器数据库表中所有字段名称和字段类型,并将其存储于定义的动态数组。
(2)循环查询管理器数据库表中的代码包路径关系,提取并存储于定义的动态数组。
(3)循环查询管理器数据库表中的主键和外键,并存储于定义的动态数组。
第五步,在所述管理器中利用TO文件调用DAO文件,并由所述FROM文件进行Oracle数据库表的数据层和表示层之间的数据交换,完成Oracle数据库表的增加、删除、查询和修改操作;所述VO文件用于检验Oracle数据库表增加内容的合法性,可有效防止对数据进行非法操作。
具体地,DAO文件包括用于对Oracle数据库表增加、删除、查询和修改的DAOimp文件和用于效验Oracle数据库表是否存在Oracle数据库表名称、字段名称、字段类型、主键和外键的DAOTest文件。
优选地,所述TO文件包括Oracle数据库表的字段set与get函数和外键引用函数;所述字段set与get函数和所述外键引用函数用于对DAOimp文件进行调用,实现Oracle数据库表的增加、删除、查询和修改操作。
与现有技术相比,本发明具有以下有益效果:
本发明巧妙的利用Oracle数据库的库表结构特有的管理特性,从Oracle数据库的管理表中抽取所需的数据,并采用模块化存储的方式分别存储至动态数组中,生成操作所需的Java代码,其生成的代码为模块化结构,较传统编写Java语言代码操作更为简便,不仅能实现增加、删除、修改和查询操作,而且,其耦合性能良好,大大降低代码错误率,缩短编写周期。不仅如此,采用统一标准的操作代码方便开发人员调用,减轻编程工作量,让开发人员从繁重的底层操作代码编写工作中彻底释放。更进一步地,统一标准的操作代码也能方便后期维护,不受维护技术人员不同的限制。综上,本发明具有操作代码标准统一,方便数据库操作和后期维护工作,减轻开发人员工作量,实现数据库快速编辑操作等优点,在数据库技术领域具有很高的实用价值和推广价值。
附图说明
图1为本发明的操作流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。
实施例
如图1所示,本发明提供标准统一、操作便捷、耦合性能良好的数据库表操作方法,具体实施如下:
首先,在数据库编辑器中创建数据库表,并建立数据库表结构映射关系,该数据库表结构包括主键、外键、字段和类型,其中,创建的数据库表遵循Oracle数据库规则。下面以一个账簿数据表为例说明整个过程,首先,在数据库编辑器中创建一个名称为ZL_ZBZLB的账簿数据表,其脚本如下:
其中,RESID为账簿数据表ZL_ZBZLB的主键,该主键会作为其他Oracle数据库表的外键。字段名称BH,字符类型ZJM IS_HD、KMBH,其余如IS_HD等字段名称为数值类型。
然后,查询账簿数据表ZL_ZBZLB的信息,判定查询的信息中主键RESID的类型是否正确,当且仅当主键RESID类型满足要求后,才能进行管理表查询,在此,提供了标准Oracle数据库表建立和修改的基础。
查询账簿数据表ZL_ZBZLB的管理表,在管理表user_tables中查询账簿数据表ZL_
ZBZLB。在管理表user_tab_columns中查询账簿数据表ZL_ZBZLB对应的字段名称BH和字段
类型ZJM IS_HD、KMBH。在管理表user_cons_columns和user_constraints中查询账簿数据
表ZL_ZBZLB对应的主键RESID。在管理表user_constraints和user_cons_columns和user_
cons_columns中查询账簿数据表ZL_ZBZLB对应的外键。将查询的内容分别存储于管理器数
据库表中,在管理器数据库表中建立代码包路径关系,用于生成不同的操作代码。
依次循环查询管理器数据库表中字段名称BH,字段类型ZJM IS_HD、KMBH,代码包路径关系,以及主键RESID,并分别存储于定义的动态数组。将动态数组中的数据组织成Java代码,生成用于对Oracle数据库表操作的两个DAO文件,两个TO文件,一个FROM文件以及一个VO文件,下载并保存上述文件至管理器中。其中,在动态数组数据组织成Java代码常采用常规的解释法、解析法、编译法和生成法,在此不予赘述。
以主键RESID增加进行说明,在管理器中,TO文件的字段set与get函数调用含有账簿数据表ZL_ZBZLB主键RESID的DAOimp文件并其添加至管理器,由FROM文件将主键RESID增加的内容从表示层传输至数据层。如此一来,实现对账簿数据表ZL_ZBZLB的增加操作,与此同时,通过VO文件用于检验账簿数据表ZL_ZBZLB主键RESID增加内容的合法性,可有效避免非法操作。
本发明巧妙地利用Oracle数据库特有的库表结构特性,通过反向提取所需数据库表结构数据,其提取内容为模块化结构,在使用时,只需建立一次标准的格式,并在动态数组中生成格式统一、耦合性能良好的操作代码,为后期的操作提供模块化的结构,如此一来,便能减少技术人员程序编辑的工作量,解决因程序格式不统一造成的代码错误和耦合性能差的问题。综上所述,本发明与现有技术中引入第三方语言或重复编程的方式相比,具有突出的实质性特点和显著的进步,在数据库技术具有广阔的市场前景。
上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用本发明的设计原理,以及在此基础上进行非创造性劳动而作出的变化,均应属于本发明的保护范围之内。
Claims (5)
1.基于数据库表结构反向生成对数据库表操作的方法,其特征在于,包括以下步骤:
步骤S1,在数据库编辑器中创建Oracle数据库表,并建立Oracle数据库表结构映射关系;所述Oracle数据库表结构包括主键、外键、字段名称、字段类型和Oracle数据库表名称;所述Oracle数据库表设有数据存储的管理表;所述Oracle数据库表为三层体系结构,即表示层、中间层和数据层;
步骤S2,查询所述Oracle数据库表的信息,判定查询的信息是否存在主键,若是,则判定主键的类型是否正确,否则返回步骤S1继续修改;继续判定所述主键的类型是否正确,若是,则进入步骤S3,否则返回步骤S1继续修改;
步骤S3,在所述Oracle数据库表的管理表中查询Oracle数据库表名称、字段名称、字段类型、主键和外键,将查询的内容分别存储于管理器数据库表中,在管理器数据库表中建立代码包路径关系;
步骤S4,循环查询管理器数据库表内存储的信息,提取并保存至定义的动态数组中,将动态数组中的数据组织成Java代码,生成用于对Oracle数据库表操作的两个DAO文件、两个TO文件、一个FROM文件以及一个VO文件,下载并保存上述文件至管理器中;
步骤S5,在所述管理器中利用TO文件调用DAO文件,并由所述FROM文件进行Oracle数据库表的数据层和表示层之间的数据交换,完成Oracle数据库表的增加、删除、查询和修改操作;所述VO文件用于检验Oracle数据库表增加内容的合法性。
2.根据权利要求1所述的基于数据库表结构反向生成对数据库表操作的方法,其特征在于,所述步骤S4中,DAO文件包括用于对Oracle数据库表增加、删除、查询和修改的DAOimp文件和用于效验Oracle数据库表是否存在Oracle数据库表名称、字段名称、字段类型、主键和外键的DAOTest文件。
3.根据权利要求2所述的基于数据库表结构反向生成对数据库表操作的方法,其特征在于,所述TO文件包括Oracle数据库表的字段set与get函数和外键引用函数;所述字段set与get函数和所述外键引用函数用于对DAOimp文件进行调用,实现Oracle数据库表的增加、删除、查询和修改操作。
4.根据权利要求1所述的基于数据库表结构反向生成对数据库表操作的方法,其特征在于,所述步骤S4中,循环查询管理器数据库表内存储的信息,并保存至定义的动态数组中,具体步骤如下:
步骤S41,循环查询管理器数据库表中所有字段名称和字段类型,并将其存储于定义的动态数组;
步骤S42,循环查询管理器数据库表中的代码包路径关系,提取并存储于定义的动态数组;
步骤S43,循环查询管理器数据库表中的主键和外键,并存储于定义的动态数组。
5.根据权利要求1所述的基于数据库表结构反向生成对数据库表操作的方法,其特征在于,所述步骤S3中,查询具体步骤如下:
步骤S31,在所述Oracle数据库表的管理表user_tables中查询Oracle数据库表名称;
步骤S32,在所述Oracle数据库表的管理表user_tab_columns中查询Oracle数据库表对应的字段名称和字段类型;
步骤S33,在所述Oracle数据库表的管理表user_cons_columns和Oracle数据库表的管理表user_constraints中查询Oracle数据库表对应的主键;
步骤S34,在所述Oracle数据库表的管理表user_constraints和Oracle数据库表的管理表user_cons_columns和Oracle数据库表的管理表user_cons_columns中查询Oracle数据库表对应的外键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711096443.5A CN107729561A (zh) | 2017-11-09 | 2017-11-09 | 基于数据库表结构反向生成对数据库表操作的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711096443.5A CN107729561A (zh) | 2017-11-09 | 2017-11-09 | 基于数据库表结构反向生成对数据库表操作的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107729561A true CN107729561A (zh) | 2018-02-23 |
Family
ID=61214244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711096443.5A Pending CN107729561A (zh) | 2017-11-09 | 2017-11-09 | 基于数据库表结构反向生成对数据库表操作的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729561A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222032A (zh) * | 2019-05-22 | 2019-09-10 | 武汉掌游科技有限公司 | 一种基于软件数据分析的通用事件模型 |
CN111581181A (zh) * | 2020-04-07 | 2020-08-25 | 浙商银行股份有限公司 | 一种基于数据库数据表自动生成区块链智能合约的方法 |
CN113157277A (zh) * | 2021-05-28 | 2021-07-23 | 中国工商银行股份有限公司 | 一种主机文件处理方法及装置 |
CN114253630A (zh) * | 2021-12-23 | 2022-03-29 | 上海新炬网络信息技术股份有限公司 | 基于Java切面修改Form表单变化信息实现日志保存的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044671A1 (en) * | 2002-08-30 | 2004-03-04 | Mitsuhiko Yoshimura | Method for changing database construction information |
CN101008952A (zh) * | 2007-01-30 | 2007-08-01 | 华为技术有限公司 | 一种持久层生成方法及装置 |
CN101697120A (zh) * | 2009-11-05 | 2010-04-21 | 河南辉煌科技股份有限公司 | 基于关系型数据库的j2ee代码生成方法 |
CN102236560A (zh) * | 2011-08-01 | 2011-11-09 | 苏州万图明电子软件有限公司 | 一种软件新模块开发方法 |
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
CN103412749A (zh) * | 2013-07-29 | 2013-11-27 | 福建联迪商用设备有限公司 | 一种基于关系型数据库的代码生成方法及代码生成器 |
CN103942280A (zh) * | 2014-04-02 | 2014-07-23 | 云南电网公司 | 一种基于数据结构自动生成代码的方法 |
CN105354036A (zh) * | 2015-11-26 | 2016-02-24 | 深圳市金证科技股份有限公司 | 数据库操作代码生成方法及装置 |
-
2017
- 2017-11-09 CN CN201711096443.5A patent/CN107729561A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044671A1 (en) * | 2002-08-30 | 2004-03-04 | Mitsuhiko Yoshimura | Method for changing database construction information |
CN101008952A (zh) * | 2007-01-30 | 2007-08-01 | 华为技术有限公司 | 一种持久层生成方法及装置 |
CN101697120A (zh) * | 2009-11-05 | 2010-04-21 | 河南辉煌科技股份有限公司 | 基于关系型数据库的j2ee代码生成方法 |
CN102236560A (zh) * | 2011-08-01 | 2011-11-09 | 苏州万图明电子软件有限公司 | 一种软件新模块开发方法 |
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
CN103412749A (zh) * | 2013-07-29 | 2013-11-27 | 福建联迪商用设备有限公司 | 一种基于关系型数据库的代码生成方法及代码生成器 |
CN103942280A (zh) * | 2014-04-02 | 2014-07-23 | 云南电网公司 | 一种基于数据结构自动生成代码的方法 |
CN105354036A (zh) * | 2015-11-26 | 2016-02-24 | 深圳市金证科技股份有限公司 | 数据库操作代码生成方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110222032A (zh) * | 2019-05-22 | 2019-09-10 | 武汉掌游科技有限公司 | 一种基于软件数据分析的通用事件模型 |
CN111581181A (zh) * | 2020-04-07 | 2020-08-25 | 浙商银行股份有限公司 | 一种基于数据库数据表自动生成区块链智能合约的方法 |
CN111581181B (zh) * | 2020-04-07 | 2021-06-29 | 浙商银行股份有限公司 | 一种基于数据库数据表自动生成区块链智能合约的方法 |
CN113157277A (zh) * | 2021-05-28 | 2021-07-23 | 中国工商银行股份有限公司 | 一种主机文件处理方法及装置 |
CN113157277B (zh) * | 2021-05-28 | 2024-03-01 | 中国工商银行股份有限公司 | 一种主机文件处理方法及装置 |
CN114253630A (zh) * | 2021-12-23 | 2022-03-29 | 上海新炬网络信息技术股份有限公司 | 基于Java切面修改Form表单变化信息实现日志保存的方法 |
CN114253630B (zh) * | 2021-12-23 | 2023-07-25 | 上海新炬网络信息技术股份有限公司 | 基于Java切面修改Form表单变化信息实现日志保存的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729561A (zh) | 基于数据库表结构反向生成对数据库表操作的方法 | |
CN101145152B (zh) | 在特定上下文内自动精细化本体的系统和方法 | |
CN103377148B (zh) | 一种统一表架构中执行部分合并的方法及系统 | |
CN100561476C (zh) | 一种基于asn类型对象的代码生成方法 | |
US8881127B2 (en) | Systems and methods to automatically generate classes from API source code | |
CN104915450A (zh) | 一种基于HBase的大数据存储与检索方法及系统 | |
CN111353235B (zh) | 一种基于模型驱动的组件端口建模方法及终端 | |
US10924551B2 (en) | IRC-Infoid data standardization for use in a plurality of mobile applications | |
CN101488086A (zh) | 一种基于领域模型的软件生成方法及装置 | |
CN101354759A (zh) | 一种基于元模型的工作流流程定义转换的方法及系统 | |
CN103914290A (zh) | 一种操作命令处理方法及装置 | |
CN106528896A (zh) | 一种数据库优化方法和装置 | |
CN105468793A (zh) | 一种仿真模型数据的自动化管理方法 | |
CN102722368B (zh) | 一种基于文档树和消息泵的插件式软件设计方法 | |
WO2024183599A1 (zh) | 数据查询方法、设备、系统及存储介质 | |
CN110825718A (zh) | 一种信息系统数据架构模型及其构建方法 | |
CN102123099B (zh) | 报文处理系统及方法 | |
CN103744943A (zh) | 一种应用于岗位价值评估系统的数据导入方法 | |
CN101272222B (zh) | 一种约束校验方法及装置 | |
CN105550176A (zh) | 一种关系数据库与xml的基本映射方法 | |
CN102799423A (zh) | Jsf中执行动态方法的方法及装置 | |
CN109614457B (zh) | 一种基于深度学习的地理信息的识别方法及装置 | |
CN101799890A (zh) | 证照数据处理方法和系统 | |
US7831629B2 (en) | Method for building data encapsulation layers for highly variable schema | |
CN114925142A (zh) | 一种orm框架的多类型数据库兼容方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180223 |
|
RJ01 | Rejection of invention patent application after publication |