CN106960048B - 一种基于Java的数据库与实体类自动映射方法 - Google Patents

一种基于Java的数据库与实体类自动映射方法 Download PDF

Info

Publication number
CN106960048B
CN106960048B CN201710204199.3A CN201710204199A CN106960048B CN 106960048 B CN106960048 B CN 106960048B CN 201710204199 A CN201710204199 A CN 201710204199A CN 106960048 B CN106960048 B CN 106960048B
Authority
CN
China
Prior art keywords
cohesive
field
names
entity class
fields
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.)
Active
Application number
CN201710204199.3A
Other languages
English (en)
Other versions
CN106960048A (zh
Inventor
张伟
王鹿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen laiwan Technology Co.,Ltd.
Original Assignee
Shenzhen Laiwan Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Laiwan Technology Co ltd filed Critical Shenzhen Laiwan Technology Co ltd
Priority to CN201710204199.3A priority Critical patent/CN106960048B/zh
Publication of CN106960048A publication Critical patent/CN106960048A/zh
Application granted granted Critical
Publication of CN106960048B publication Critical patent/CN106960048B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于Java的数据库与实体类自动映射算法,包括以下步骤:S1:通过结果集,调用getMetaData获取元数据,再用获取的元数据调用getColumnLabel方法来获取所有的列名;S2:利用Java的发射机制获取实体类的所有字段的名字以及类型;S3:判断实体类的每个字段类型是否是内聚的其他实体类的类型,分如下两种情况:1)不是内聚的字段;2)是内聚的字段。本发明自动配置映射省去了程序员大量的时间与精力,提高了编程效率。采用自动匹配的方式来自动配置映射,并且采用字符串相似度算法来匹配字段,实体类的字段名无需与数据库表的列名一致,能够匹配具有内聚关系的实体类。

Description

一种基于Java的数据库与实体类自动映射方法
技术领域
本发明涉及自动映射技术领域,具体为一种基于Java的数据库与实体类自动映射方法。
背景技术
Mybatics框架在配置数据库与实体类映射关系的时候,采取的是手动配置xml文件来进行配置数据库与实体类的映射关系。采用手动配置映射关系的方式会占用很多时间,费时又费力,为此,我们提出一种基于Java的数据库与实体类自动映射方法。
发明内容
本发明的目的在于提供一种基于Java的数据库与实体类自动映射方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于Java的数据库与实体类自动映射方法,其特征在于,包括以下步骤:
S1:通过结果集,调用getMetaData获取元数据,再用获取的元数据调用getColumnLabel方法来获取所有的列名;
S2:利用Java的反射机制获取实体类的所有字段的名字以及类型;
S3:判断实体类的每个字段类型是否是内聚的其他实体类的类型,分如下两种情况:
1)不是内聚的字段,则直接采用字符串相似度匹配算法,即levenshtein算法,将该字段名与数据库列名一一进行匹配,并找到最相似的数据库表的列名,再使用结果集调用getObject方法来获取数据,再利用Java反射机制将这个数据赋值给实体类对应的字段;
2)是内聚的字段,则采用递归的方式,按照步骤S2采用Java的反射机制来获取内聚字段的类型所对应的实体类的所有字段的名字以及类型,再按照步骤S3一直递归下去。
优选的,所述步骤S3中1)的字符串相似度算法如下:
Figure GDA0002958942060000021
Figure GDA0002958942060000031
Figure GDA0002958942060000041
优选的,所述步骤S3中1)的数据库表列名的获取方法,如下所示:
Figure GDA0002958942060000042
Figure GDA0002958942060000051
与现有技术相比,本发明的有益效果是:本基于Java的数据库与实体类自动映射算法,实体类的字段取名不需要严格的与数据库表的列名一致,只需要相似即可,即使实体类里内聚了另一个实体类也能匹配到。与手动配置映射关系相比,自动配置映射省去了程序员大量的时间与精力,提高了编程效率。采用自动匹配的方式来自动配置映射,并且采用字符串相似度算法来匹配字段,实体类的字段名无需与数据库表的列名一致,能够匹配具有内聚关系的实体类。
附图说明
图1为本发明的流程示意图。
具体实施方式
下面将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种技术方案:
一种基于Java的数据库与实体类自动映射方法,包括以下步骤:
S1:通过结果集,调用getMetaData获取元数据,再用获取的元数据调用getColumnLabel方法来获取所有的列名;
S2:利用Java的反射机制获取实体类的所有字段的名字以及类型;
S3:判断实体类的每个字段类型是否是内聚的其他实体类的类型,分如下两种情况:
1)不是内聚的字段,则直接采用字符串相似度匹配算法,即levenshtein算法,将该字段名与数据库列名一一进行匹配,并找到最相似的数据库表的列名,再使用结果集调用getObject方法来获取数据,再利用Java反射机制将这个数据赋值给实体类对应的字段;
2)是内聚的字段,则采用递归的方式,按照步骤S2采用Java的反射机制来获取内聚字段的类型所对应的实体类的所有字段的名字以及类型,再按照步骤S3一直递归下去,如图1所示。
判断字段是否是内聚的实体类算法:
Figure GDA0002958942060000061
Figure GDA0002958942060000071
Figure GDA0002958942060000081
具体的,步骤S3中1)的字符串相似度算法如下:
Figure GDA0002958942060000082
Figure GDA0002958942060000091
Figure GDA0002958942060000101
具体的,步骤S3中1)的数据库表列名的获取方法,如下所示:
Figure GDA0002958942060000102
Figure GDA0002958942060000111
本基于Java的数据库与实体类自动映射算法,实体类的字段取名不需要严格的与数据库表的列名一致,只需要相似即可,即使实体类里内聚了另一个实体类也能匹配到。与手动配置映射关系相比,自动配置映射省去了程序员大量的时间与精力,提高了编程效率。采用自动匹配的方式来自动配置映射,并且采用字符串相似度算法来匹配字段,实体类的字段名无需与数据库表的列名一致,能够匹配具有内聚关系的实体类。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (1)

1.一种基于Java的数据库与实体类自动映射方法,其特征在于,包括以下步骤:
S1:通过结果集,调用getMetaData获取元数据,再用获取的元数据调用getColumnLabel方法来获取所有的列名;
S2:利用Java的反射机制获取实体类的所有字段的名字以及类型;
S3:判断实体类的每个字段类型是否是内聚的其他实体类的类型,分如下两种情况:
1)不是内聚的字段,则直接采用字符串相似度匹配算法,即levenshtein算法,将该字段名与数据库列名一一进行匹配,并找到最相似的数据库表的列名,再使用结果集调用getObject方法来获取数据,再利用Java反射机制将这个数据赋值给实体类对应的字段;
2)是内聚的字段,则采用递归的方式,按照步骤S2采用Java的反射机制来获取内聚字段的类型所对应的实体类的所有字段的名字以及类型,再按照步骤S3一直递归下去。
CN201710204199.3A 2017-03-30 2017-03-30 一种基于Java的数据库与实体类自动映射方法 Active CN106960048B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710204199.3A CN106960048B (zh) 2017-03-30 2017-03-30 一种基于Java的数据库与实体类自动映射方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710204199.3A CN106960048B (zh) 2017-03-30 2017-03-30 一种基于Java的数据库与实体类自动映射方法

Publications (2)

Publication Number Publication Date
CN106960048A CN106960048A (zh) 2017-07-18
CN106960048B true CN106960048B (zh) 2021-10-01

Family

ID=59471603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710204199.3A Active CN106960048B (zh) 2017-03-30 2017-03-30 一种基于Java的数据库与实体类自动映射方法

Country Status (1)

Country Link
CN (1) CN106960048B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110740291A (zh) * 2018-07-20 2020-01-31 视联动力信息技术股份有限公司 一种基于视联网监控数据的同步方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010054560A (ko) * 1999-12-07 2001-07-02 이계철 다중 데이터베이스 질의언어를 이용한 스키마 통합 방법
CN101989275A (zh) * 2009-07-31 2011-03-23 上海杉达学院 利用语言集成查询linq进行数据库数据管理的方法
CN102663103A (zh) * 2012-04-13 2012-09-12 北京工业大学 可配置的自动化生成数据库和数据访问的方法
WO2012174767A1 (zh) * 2011-06-20 2012-12-27 中兴通讯股份有限公司 一种基于orm架构的高效数据库访问的实现方法及装置
CN105278961A (zh) * 2015-10-28 2016-01-27 广州华多网络科技有限公司 生成数据库表结构文档的方法及系统
CN105389339A (zh) * 2015-10-20 2016-03-09 咸亨国际(杭州)物联网信息产业有限公司 一种快速生成数据库sql语句和实体类的工具
CN105447051A (zh) * 2014-09-22 2016-03-30 普天信息技术有限公司 一种数据库操作的方法和装置
CN106055652A (zh) * 2016-06-01 2016-10-26 兰雨晴 一种基于模式和实例的数据库匹配方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702691B2 (en) * 2004-05-21 2010-04-20 Bea Systems, Inc. Systems and methods for EJB finders using SQL
FR2940693B1 (fr) * 2008-12-30 2016-12-02 Thales Sa Procede et systeme optimises de gestion des noms propres pour l'optimisation de la gestion et de l'interrogation des bases de donnees.

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010054560A (ko) * 1999-12-07 2001-07-02 이계철 다중 데이터베이스 질의언어를 이용한 스키마 통합 방법
CN101989275A (zh) * 2009-07-31 2011-03-23 上海杉达学院 利用语言集成查询linq进行数据库数据管理的方法
WO2012174767A1 (zh) * 2011-06-20 2012-12-27 中兴通讯股份有限公司 一种基于orm架构的高效数据库访问的实现方法及装置
CN102663103A (zh) * 2012-04-13 2012-09-12 北京工业大学 可配置的自动化生成数据库和数据访问的方法
CN105447051A (zh) * 2014-09-22 2016-03-30 普天信息技术有限公司 一种数据库操作的方法和装置
CN105389339A (zh) * 2015-10-20 2016-03-09 咸亨国际(杭州)物联网信息产业有限公司 一种快速生成数据库sql语句和实体类的工具
CN105278961A (zh) * 2015-10-28 2016-01-27 广州华多网络科技有限公司 生成数据库表结构文档的方法及系统
CN106055652A (zh) * 2016-06-01 2016-10-26 兰雨晴 一种基于模式和实例的数据库匹配方法及系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Application of Open-Source Framework Based on Struts and Hibernate;Weixing WANG;《第二届亚太地区信息论学术会议》;20111101;第55-57页 *
Design and Implementation of Information Management System for Training Institutions;Zhang Lei;《2015 International Conference on Mechanical,Electronic and Information Technology Engineering》;20150321;第652-655页 *
SaaS系统动态业务逻辑与数据库解耦机制的设计与实现;陈莲;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20160122;第21-36页 *
基于Docker的应用服务云平台的设计和实现;肖坚;《中国优秀硕士学位论文全文数据库(信息科技辑)》;20170301;第5-58页 *

Also Published As

Publication number Publication date
CN106960048A (zh) 2017-07-18

Similar Documents

Publication Publication Date Title
US11494688B2 (en) Learning ETL rules by example
CN105677323A (zh) 一种自动生成数据库操作层代码的方法
US20090112799A1 (en) Database Statistics for Optimization of Database Queries Containing User-Defined Functions
AU2017399399B2 (en) Method and system for optimizing database system, electronic device, and storage medium
CN111737227B (zh) 数据修改方法及系统
CN103559025A (zh) 一种采用聚类方式进行软件重构的方法
WO2019157199A3 (en) Medical claim database relationship processing
CN106960048B (zh) 一种基于Java的数据库与实体类自动映射方法
US20170109253A1 (en) System and method for filtering system log under operating system
CN104731911A (zh) 一种数据表与实体类的动态映射及转换方法
CN110928984A (zh) 一种知识图谱的构建方法、装置、终端及存储介质
CN104331418A (zh) 一种基于数据库管理的物料自动编码方法
CN103678396B (zh) 一种基于数据模型的数据备份方法和装置
US20120042057A1 (en) Method for management of customer premises equipment
CN113110832A (zh) 一种智能高效代码生成方法、装置及存储介质
CN103544211A (zh) 一种将对象转化为sql语句的通用查询系统及方法
US10795880B2 (en) System and method for inter-program file control communication
US20170132275A1 (en) Query handling in search systems
CN104778253B (zh) 一种提供数据的方法和装置
CN113099255B (zh) 数据生成方法和装置
US10146822B1 (en) Automated script generator for processing storage system data files
CN106844377B (zh) 多维数据库的处理方法及装置
CN105718801A (zh) 一种基于编程模式和模式匹配的漏洞聚类方法
CN106406856A (zh) 一种Oracle单机一键自动部署方法
CN105224319A (zh) 基于dom4j实现XBRL实例文档预览的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB03 Change of inventor or designer information

Inventor after: Zhang Wei

Inventor after: Wang Lu

Inventor before: Zhang Wei

CB03 Change of inventor or designer information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TA01 Transfer of patent application right

Effective date of registration: 20210917

Address after: 518000 unit 01, 13 / F, Changhong technology building, 18 Keji South 12 road, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen laiwan Technology Co.,Ltd.

Address before: No. 1, building 44, petrochemical 1st Village, Yanziji street, Qixia District, Nanjing, Jiangsu 210038

Applicant before: Zhang Wei

TA01 Transfer of patent application right