專利名稱:一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法
技術(shù)領(lǐng)域:
本發(fā)明涉及ERP系統(tǒng)中數(shù)據(jù)庫開發(fā)技術(shù)領(lǐng)域,特別涉及一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法。
背景技術(shù):
ERP系統(tǒng)的后臺(tái)數(shù)據(jù)庫一般支持當(dāng)前主流的關(guān)系型數(shù)據(jù)庫=Oracle和SQLServer0數(shù)據(jù)庫廠商為了發(fā)揮各自數(shù)據(jù)庫的最佳性能,支持的SQL標(biāo)準(zhǔn)也不盡相同,甚至還有一些特殊優(yōu)化的SQL語法。這些SQL語法的不同增加了 ERP系統(tǒng)的開發(fā)復(fù)雜度和技術(shù)難度。通常ERP系統(tǒng)后臺(tái)為了支持多種數(shù)據(jù)庫,要求軟件開發(fā)人員在開發(fā)過程中編寫不同數(shù)據(jù)庫間通用的SQL語句,但是很多功能的實(shí)現(xiàn),通用SQL是無法滿足實(shí)現(xiàn)和性能的需求的。因此,軟件開發(fā)人員需要同時(shí)掌握兩種、甚至三種數(shù)據(jù)庫,在系統(tǒng)的開發(fā)過程中編寫不同數(shù)據(jù)庫對(duì)應(yīng)的SQL語句,以滿足支持多種數(shù)據(jù)庫的需求。這種情況下,不僅增加了軟件系統(tǒng)的復(fù)雜度和開發(fā)工作量,而且對(duì)軟件開發(fā)人員提出了更高的要求。因此,對(duì)于開發(fā)大型企業(yè)ERP系統(tǒng)來講,這很難滿足敏捷開發(fā)的要求。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,解決了數(shù)據(jù)庫差異導(dǎo)致的SQL語句不同的問題,并且實(shí)現(xiàn)快速、規(guī)范開發(fā)數(shù)據(jù)庫操作SQL語句的目的。所述技術(shù)方案如下:
一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,包括以下步驟:
A、將實(shí)體和實(shí)體間關(guān)系轉(zhuǎn)換成通用數(shù)據(jù)結(jié)構(gòu);
B、基于所述的通用數(shù)據(jù)結(jié)構(gòu)和SQL語法樹來映射生成SQL語句;
C、根據(jù)所述的SQL語句進(jìn)行業(yè)務(wù)操作。通用數(shù)據(jù)結(jié)構(gòu)是用于描述實(shí)體和實(shí)體間關(guān)系的內(nèi)存數(shù)據(jù)結(jié)構(gòu),包括核心實(shí)體、節(jié)點(diǎn)對(duì)象、節(jié)點(diǎn)對(duì)象元素、關(guān)聯(lián)關(guān)系四個(gè)部分。SQL語句包括 Insert SQL語句、Delete SQL語句、Update SQL語句和 Select SQL語句,分別對(duì)應(yīng)1、Insert插入模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的插入操作;2、Delete刪除模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的刪除操作;3、Update更新模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的更新操作;4、Select查詢模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的查詢操作。在Insert插入模式下的映射生成SQL語句的過程中,對(duì)所有的實(shí)體數(shù)據(jù)批量的插入到數(shù)據(jù)庫中。
在Select查詢模式下的映射生成SQL語句的過程中,通過查詢類型枚舉和通用數(shù)據(jù)結(jié)構(gòu)解析,確定要查詢的實(shí)體和實(shí)體間的關(guān)聯(lián)方式,并輔以實(shí)體上定義的排序規(guī)則、過濾規(guī)則以及分組規(guī)則,最終形成查詢Select SQL語句。本發(fā)明的具有功能和有益效果:在ERP系統(tǒng)下,通過使用通用數(shù)據(jù)結(jié)構(gòu)和SQL語法樹解析常用 Insert\Update\Delete\Select SQL語句,可以快速生成 Oracle 和 SQL Server數(shù)據(jù)庫下的業(yè)務(wù)操作SQL。雖然不能滿足全部的SQL解析需要,但是可以滿足日常大部分的SQL解析需要,這樣不僅大大提高了軟件研發(fā)人員的開發(fā)效率,而且屏蔽了數(shù)據(jù)庫的差異并規(guī)范了 SQL的寫法。
圖1為本發(fā)明的一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法的映射結(jié)構(gòu)示意 圖2為本發(fā)明的一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法的通用數(shù)據(jù)結(jié)構(gòu)示意 圖3為本發(fā)明的一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法的Select模式下的SQL語法樹示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。一、對(duì)于通用數(shù)據(jù)結(jié)構(gòu),是用于描述實(shí)體和實(shí)體間關(guān)系的內(nèi)存數(shù)據(jù)結(jié)構(gòu),包括核心實(shí)體、節(jié)點(diǎn)對(duì)象、節(jié)點(diǎn)對(duì)象元素 、關(guān)聯(lián)關(guān)系四個(gè)部分,圖例參見附圖2。其中:
1、核心實(shí)體。通用數(shù)據(jù)結(jié)構(gòu)是一個(gè)樹形結(jié)構(gòu),它將實(shí)體和各實(shí)體間的關(guān)系使用樹形結(jié)構(gòu)描述了出來。在這里,需要識(shí)別出來核心的操作實(shí)體,核心的操作實(shí)體作為整棵樹的根節(jié)點(diǎn),其他各個(gè)實(shí)體作為根結(jié)點(diǎn)的子節(jié)點(diǎn)或者關(guān)聯(lián)節(jié)點(diǎn)。2、節(jié)點(diǎn)對(duì)象。節(jié)點(diǎn)對(duì)象是對(duì)通用數(shù)據(jù)結(jié)構(gòu)樹形結(jié)構(gòu)中的節(jié)點(diǎn)的抽象,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的是具體的實(shí)體,各個(gè)實(shí)體間的主從關(guān)系通過樹形結(jié)構(gòu)的父節(jié)點(diǎn)和子節(jié)點(diǎn)來描述,各個(gè)實(shí)體間的關(guān)聯(lián)關(guān)系通過下面章節(jié)三和四介紹的節(jié)點(diǎn)對(duì)象元素和關(guān)聯(lián)關(guān)系來描述。另外,在節(jié)點(diǎn)對(duì)象上描述節(jié)點(diǎn)對(duì)象的節(jié)點(diǎn)對(duì)象元素集合、排序規(guī)則、過濾條件這些信息。3、節(jié)點(diǎn)對(duì)象元素。節(jié)點(diǎn)對(duì)象元素是對(duì)實(shí)體屬性的抽象,在實(shí)際的SQL語句中,對(duì)應(yīng)的是表或者視圖的字段信息。節(jié)點(diǎn)對(duì)象元素有以下屬性:ID、編號(hào)、名稱、數(shù)據(jù)類型、長度、精度、默認(rèn)值、是否為空、是否唯一,關(guān)聯(lián)關(guān)系。其中,關(guān)聯(lián)關(guān)系是指當(dāng)前節(jié)點(diǎn)對(duì)象元素關(guān)聯(lián)的其他節(jié)點(diǎn)對(duì)象元素信息。下一段落描述的就是關(guān)聯(lián)關(guān)系。4、關(guān)聯(lián)關(guān)系。關(guān)聯(lián)關(guān)系描述的是節(jié)點(diǎn)對(duì)象之間的節(jié)點(diǎn)對(duì)象元素的關(guān)聯(lián)關(guān)系,即各個(gè)實(shí)體間的關(guān)聯(lián)關(guān)系。關(guān)聯(lián)關(guān)系有三種類型:左連接(Left Join)、右連接(Right Join)和內(nèi)連接(InnerJoin)。通過一個(gè)節(jié)點(diǎn)對(duì)象元素上的關(guān)聯(lián)關(guān)系可以找到當(dāng)前節(jié)點(diǎn)對(duì)象關(guān)聯(lián)的其他節(jié)點(diǎn)對(duì)象以及關(guān)聯(lián)的節(jié)點(diǎn)對(duì)象元素和關(guān)聯(lián)類型。二、對(duì)于SQL語法樹,是通過對(duì)Oracle和SQL Server兩種數(shù)據(jù)庫的SQL語法進(jìn)行研究比較后,發(fā)現(xiàn)需要采用語法分析將SQL語句解析為一棵語法樹。圖例請參見附圖3。這顆SQL語法樹包括抽象SQL語句、插入SQL語句(InsertSQLStatement)、刪除 SQL 語句(DeleteSQLStatement)、更新 SQL 語句(UpdateSQLStatement)、查詢 SQL 語句(SelectSQLStatement)、字段 Field、表 Table、主鍵 PrimaryKey、內(nèi)連接對(duì)象 Inner JoinItem、左連接對(duì)象Left Join Item、右連接對(duì)象 Right Join Item、連接條件JoinCondition這些組成結(jié)構(gòu),其中:
抽象 SQL 語句,是對(duì) Insert SQL 語句、SeIect SQL 語句、DeIete SQL 語句、Update SQL語句的抽象。1、InsertSQLStatement。主要描述Insert插入SQL語句,在繼承抽象SQL語句的同時(shí),還包含Insert語句 涉及的插入字段集合和插入的數(shù)據(jù)這兩個(gè)重要屬性。通過這兩個(gè)屬性輔助完成Insert SQL語句的組裝。2、DeleteSQLStatement。主要描述Delete刪除SQL語句,在繼承抽象SQL語句的同時(shí),還包含Delete條件語句和字查詢語句兩個(gè)屬性。顧名思義,Delete條件語句作為Delete SQL語句的過濾條件;子查詢語句則是另一種Delete SQL語句的過濾條件語法表
/Jn ο3、UpdateSQLStatement。主要描述了 Update更新SQL語句。在繼承抽象SQL語句的同時(shí),還包含Update條件語句和Update更新字段集合兩個(gè)屬性,通過這兩個(gè)屬性輔助完成Update SQL語句的生成。4、SelectSQLStatement。主要描述了 Select查詢SQL語句。在繼承抽象SQL語句的同時(shí),還包含Select字段集合、字段別名映射、過濾條件、排序條件、主查詢對(duì)象、返回多少行、分組條件等屬性,通過這些屬性可以組裝大部分常見的Select查詢SQL。5、字段Field。對(duì)SQL語句中用到的字段的描述。對(duì)于Field有三種實(shí)現(xiàn),Insert插入字段、Update更細(xì)字段、Select查詢字段。6、表Table。在這里我們將表和視圖統(tǒng)一抽象成SQL語法樹中的表。它有以下屬性:名稱、別名、是否使用別名三個(gè)關(guān)鍵屬性。7、From子句。用作在SQL語句中的字查詢語句。8、主鍵PrimaryKey。表的主鍵是不允許為空的,因此在Insert語句中涉及到對(duì)主鍵字段的操作。它有主鍵字段集合、字段順序號(hào)、字段值三個(gè)屬性。9、內(nèi)連接對(duì)象Inner Join Item。描述了 SQL語句中的內(nèi)連接。10、左連接對(duì)象Left Join Item。描述了 SQL語句中的左連接。11、右連接對(duì)象Right Join Item。描述了 SQL語句中的右連接。12、連接條件JoinCondition。描述SQL語句中連接用到的關(guān)聯(lián)條件。三、對(duì)于映射生成SQL,是基于通用數(shù)據(jù)結(jié)構(gòu)和SQL語法樹來映射生成SQL語句的方法。首先,映射生成SQL方法需要SQL解析上下文的支持。在SQL解析上下文中,主要包含但不限于通用數(shù)據(jù)結(jié)構(gòu)、排序條件、過濾條件、SQL中用到的數(shù)據(jù)、變更的數(shù)據(jù)集合。
其次,映射生成SQL主要分為四種方法:Insert插入模式下的映射生成SQL方法、Delete刪除模式下的映射生成SQL方法、Update更新模式下的映射生成SQL方法、Select查詢模式下的映射生成SQL方法。其中:
1、Insert插入模式下映射生成SQL方法:
提供對(duì)Insert插入SQL語句的解析。在具體解析的過程中,首先定義一個(gè)SQL語句樹中的InsertSQLStatement對(duì)象,用來描述Insert SQL語句。然后進(jìn)行解析和拼裝,這其中主要包括三個(gè)步驟:
第一步是構(gòu)造Insert語句的主干部分,通過SQL解析上下文解析通用數(shù)據(jù)結(jié)構(gòu),以確定要插入的實(shí)體對(duì)應(yīng)的表和實(shí)體屬性對(duì)應(yīng)的字段;
第二步從SQL解析上下文中拿到要插入的數(shù)據(jù)形成DbParameter數(shù)組,在這里采用構(gòu)造參數(shù)的形式包裝Insert語句的插入數(shù)據(jù),因?yàn)镮nsert語句中插入Clob、Blob、DateTime、Image類型的數(shù)據(jù)需要采用特殊的寫法,甚至無法形成Insert語句,因此采用構(gòu)造參數(shù)的形式。第三步生成最終的Insert SQL語句和對(duì)應(yīng)DbParameter數(shù)組。2、Delete刪除模式下映射生成SQL方法:
提供對(duì)Delete刪除SQL語句的解析。在具體的解析過程中,首先定義一個(gè)SQL語句樹中的DeleteSqlStatement對(duì)象,用來描述Delete SQL語句。然后通過以下步驟進(jìn)行解析和拼裝,
第一步從SQL解析上下文中解 析通用數(shù)據(jù)結(jié)構(gòu),以確定要?jiǎng)h除的實(shí)體對(duì)應(yīng)的表;
第二步確定刪除語句的過濾條件,主要支持按主鍵刪除、按指定的刪除條件和通過一個(gè)表的數(shù)據(jù)刪除三種。如果按照主鍵進(jìn)行刪除,則需要從SQL解析上下文中拿到要?jiǎng)h除的數(shù)據(jù)形成DbParameter數(shù)組。第三步構(gòu)造形成最終的Delete SQL。3、Update更新模式下映射生成SQL方法:
提供對(duì)Update更新SQL語句的解析。在具體的解析過程中,首先定義一個(gè)SQL語句樹中的UpdateSqlStatement對(duì)象,用來描述Update SQL語句。然后通過以下步驟進(jìn)行解析和拼裝,
第一步從SQL解析上下文中解析通用數(shù)據(jù)結(jié)構(gòu),確定要更新的實(shí)體對(duì)應(yīng)的表和實(shí)體屬性對(duì)應(yīng)的字段;
第二步從SQL解析上下文中獲取變更的數(shù)據(jù)集合,并構(gòu)造成DbParameter數(shù)組;第三步構(gòu)造Update語句的過濾條件,支持按指定的更新條件和通過一個(gè)表的數(shù)據(jù)進(jìn)行更新兩種。第四步生成Update SQL,首先結(jié)合前兩步構(gòu)造好的更新表、字段和DbParameter數(shù)組,然后利用第三步中確定的過濾條件形成Update SQL。4、Select查詢模式下映射生成SQL方法:
提供對(duì)Select查詢SQL語句的解析。在具體的解析過程中,首先定義一個(gè)SQL語句樹中的SelectSqlStatement對(duì)象,用來描述Select SQL語句。然后通過以下步驟進(jìn)行解析和拼裝:
第一步通過查詢類型枚舉確定要查詢的類型;
第二步解析通用數(shù)據(jù)結(jié)構(gòu),確定要查詢的實(shí)體和實(shí)體的屬性結(jié)合,進(jìn)而確定要查詢的表和字段;
第三步通過通用數(shù)據(jù)結(jié)構(gòu)判斷在要查詢的實(shí)體是否需要關(guān)聯(lián)查詢其他的實(shí)體,其他的實(shí)體可以是一個(gè)或多個(gè),并且確定關(guān)聯(lián)的方式和關(guān)聯(lián)的條件,支持內(nèi)連接、左連接和右連接三種方式;
第四步構(gòu)造查詢的過濾條件;
第五步構(gòu)造查詢的排序條件;
第六步生成最終的Select SQL。下面給出一個(gè)實(shí)例來具體說明:
在ERP系統(tǒng)中的[業(yè)務(wù)基礎(chǔ)數(shù)據(jù)管理]模塊中,提供了 [往來單位查詢]功能,主要負(fù)責(zé)按條件進(jìn)行往來單位的查詢操作。按條件查詢往來單位
用戶進(jìn)入往來單位查詢功能,選擇往來單位的查詢條件:
所屬地區(qū):山東 單位性質(zhì):外部往來單位 信用級(jí)別:A
創(chuàng)建時(shí)間:2010年至2012年之間
提交查詢請求。應(yīng)用服務(wù)器端接受到修改后保存請求后,首先將往來單位實(shí)體以及往來單位的關(guān)聯(lián)實(shí)體轉(zhuǎn)換 成通用數(shù)據(jù)結(jié)構(gòu),最后調(diào)用Select更新模式下的映射生成SQL方法進(jìn)行Select語句生成:
首先定義一個(gè)SQL語句樹中的SelectSqlStatement對(duì)象,用來描述Select SQL語句。然后通過以下五個(gè)步驟Select SQL語句的解析和拼裝:
第一步,首先從SQL解析上下文中解析通用數(shù)據(jù)結(jié)構(gòu),確定查詢的往來單位核心實(shí)體后,確定往來單位實(shí)體對(duì)應(yīng)的表RelatedCompany ;然后,確定往來單位核心實(shí)體不包含主從關(guān)系,但是有關(guān)聯(lián)關(guān)系。往來單位實(shí)體的地區(qū)屬性關(guān)聯(lián)地區(qū)實(shí)體,地區(qū)實(shí)體對(duì)應(yīng)的表示Area表。最后,在從各個(gè)實(shí)體上獲取節(jié)點(diǎn)對(duì)象元素集合,確定要查詢的字段。第二步,按照通用數(shù)據(jù)結(jié)構(gòu)中確定的實(shí)體間的關(guān)聯(lián)關(guān)系,確定查詢時(shí)表間的關(guān)聯(lián)。關(guān)聯(lián)的表可以是一個(gè)或多個(gè),也可以是一個(gè)或者多個(gè)子查詢。并且確定關(guān)聯(lián)的方式和關(guān)聯(lián)的條件,支持內(nèi)連接、左連接和右連接三種。第三步構(gòu)造查詢的過濾條件:地區(qū)在山東;單位性質(zhì)是外部往來單位;信用級(jí)別是A ;創(chuàng)建時(shí)間在2010年和2012年之間。構(gòu)造后的查詢過濾條件是:
Area.Name=’ 山東,
IsInside=O
CreatTime>^ 2010’ and CreatTime〈’ 2012’
CreditLevel=^ A,
第四步構(gòu)造查詢的排序條件(此步驟在本場景中不存在);
第五步形成最終的Select SQL。首先,依據(jù)第一步中確定的要查詢的核心表或者核心查詢以及查詢的字段,在本場景中,要查詢的核心RelatedCompany,則形成:
Select RelatedCompany.Code, ReIatedCompany.Name, ReIatedCompany.CreateTimej Area.Name, …From RelatedCompany然后通過在拼裝關(guān)聯(lián)查詢其他表的數(shù)據(jù)以及關(guān)聯(lián)的方式和條件:在本場景中以內(nèi)連接的方式關(guān)聯(lián)一個(gè)或者多個(gè)表,則形成:
Select RelatedCompany.Code, Re IatedCompany.Name, Re IatedCompany.CreateTime,Area.Name, …From RelatedCompany
Inner Join Area On RelatedCompany.AreaID= Area.1D假如以左連接的方式關(guān)聯(lián)一個(gè)或者多個(gè)表,則形成:
Select RelatedCompany.Code, RelatedCompany.Name, ReIatedCompany.CreateTime,Area.Name, …From RelatedCompany
Left Join Area On RelatedCompany.AreaID= Area.1D右連接的情況類似左連接。之后,如果第三步的過濾條件存在,在已經(jīng)構(gòu)造的SQL語句后添加第三步的過濾條件;如果第四步的排序條件存在,則繼續(xù)添加第四步的排序條件,對(duì)應(yīng)上面所述的四種SQL語句分別是:
Select ReIatedCompany.Code, RelatedCompany.Name, ReIatedCompany.CreateTime,Area.Name, …From RelatedCompany
Inner Join Area On RelatedCompany.AreaID= Area.1D
Where Re I atedCompany.CreatTime>’ 2010’ and RelatedCompany.CreatTime〈’ 2012’ and Area.Name=^ 山東, and IsInside=O and CreditLevel=^
假如核心表以左連 接的方式關(guān)聯(lián)一個(gè)或者多個(gè)表情況:
Select ReIatedCompany.Code, ReIatedCompany.Name, ReIatedCompany.CreateTime,Area.Name, …From RelatedCompany
Left Join Area On RelatedCompany.AreaID= Area.1D
Where RelatedCompany.CreatTime>’ 2010’ and RelatedCompany.CreatTime〈’ 2012’ and Area.Name=^ 山東, and IsInside=O and CreditLevel=^右連接的情況類似左連接。最后將生成的Select SQL語句在數(shù)據(jù)庫中執(zhí)行。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,包括以下步驟: A、將實(shí)體和實(shí)體間關(guān)系轉(zhuǎn)換成通用數(shù)據(jù)結(jié)構(gòu); B、基于所述的通用數(shù)據(jù)結(jié)構(gòu)和SQL語法樹來映射生成SQL語句; C、根據(jù)所述的SQL語句進(jìn)行業(yè)務(wù)操作。
2.根據(jù)權(quán)利要求1所述的一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,其特征在于,所述的通用數(shù)據(jù)結(jié)構(gòu)是用于描述實(shí)體和實(shí)體間關(guān)系的內(nèi)存數(shù)據(jù)結(jié)構(gòu),包括核心實(shí)體、節(jié)點(diǎn)對(duì)象、節(jié)點(diǎn)對(duì)象元素、關(guān)聯(lián)關(guān)系四個(gè)部分。
3.根據(jù)權(quán)利要求1所述的一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,其特征在于,所述的SQL語句包括Insert SQL語句、Delete SQL語句、Update SQL語句和Select SQL語句,分別對(duì)應(yīng)1、Insert插入模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的插入操作;2、Delete刪除模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的刪除操作;3、Update更新模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的更新操作;4、Select查詢模式下的映射生成SQL語句,其用于處理實(shí)體和實(shí)體關(guān)系數(shù)據(jù)在數(shù)據(jù)庫的查詢操作。
4.根據(jù)權(quán)利要求3所述的一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,其特征在于,在Insert插入模式下的映射生成SQL語句的過程中,對(duì)所有的實(shí)體數(shù)據(jù)批量的插入到數(shù)據(jù)庫中。
5.根據(jù)權(quán)利要求3所述的一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,其特征在于,在Select查詢模式下的映射生成SQL語句的過程中,通過查詢類型枚舉和通用數(shù)據(jù)結(jié)構(gòu)解析,確定要查詢的實(shí)體和實(shí)體間的關(guān)聯(lián)方式,并輔以實(shí)體上定義的排序規(guī)則、過濾規(guī)則以及分組規(guī)則, 最終形成查詢Select SQL語句。
全文摘要
本發(fā)明提供一種基于通用數(shù)據(jù)結(jié)構(gòu)描述的實(shí)體與關(guān)系數(shù)據(jù)的映射方法,其主要采用通用數(shù)據(jù)結(jié)構(gòu)來描述內(nèi)存中實(shí)體-關(guān)系的結(jié)構(gòu),并抽取出SQL語法樹來支撐實(shí)體-關(guān)系數(shù)據(jù)映射生成SQL語句。旨在解決數(shù)據(jù)庫差異導(dǎo)致的SQL語句不同的問題,并且實(shí)現(xiàn)快速、規(guī)范開發(fā)數(shù)據(jù)庫操作SQL語句的目的。
文檔編號(hào)G06F17/30GK103246704SQ20131011826
公開日2013年8月14日 申請日期2013年4月8日 優(yōu)先權(quán)日2013年4月8日
發(fā)明者周國慶, 孫立新 申請人:浪潮集團(tuán)山東通用軟件有限公司