CN110019266A - 一种sql语句的生成方法及装置 - Google Patents
一种sql语句的生成方法及装置 Download PDFInfo
- Publication number
- CN110019266A CN110019266A CN201711052564.XA CN201711052564A CN110019266A CN 110019266 A CN110019266 A CN 110019266A CN 201711052564 A CN201711052564 A CN 201711052564A CN 110019266 A CN110019266 A CN 110019266A
- Authority
- CN
- China
- Prior art keywords
- modified
- attribute
- change
- value
- sql statement
- 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.)
- Granted
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
- G06F16/235—Update request formulation
-
- 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/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种SQL语句的生成方法,获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;创建所述待修改对象的快照,基于所述待修改对象的快照检测对已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;并根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句,由于SQL语句中仅仅涉及待修改对象中发生改变的属性,SQL语句较为简单,在并发情况下也可以避免先提交的修改结果被后提交的修改结果覆盖的问题。
Description
技术领域
本发明涉及数据库技术领域,更具体的,涉及一种SQL语句的生成方法及装置。
背景技术
对象关系映射(英文全称:Object RelationalMapping,英文简称ORM),是一种程序技术,用于实现面向对象编程语言里不同类型***的数据之间的转换。
ORM框架一般用于数据库模型到程序里使用对象之间进行映射,ORM框架的特殊之处在于:对象在程序中被修改后,ORM自动生成相应的SQL语句,并将生成的SQL语句提交到数据库中。
以对象模型“员工”为例,“员工”包括属性:姓名、年龄和工作地点,对应数据库中的一个表,表中包括主键id,姓名、年龄、工作地点共5列,假设存在一个员工A,id=10,name=xiaoming,age=24,place=beijing。用户编辑了员工A的个人资料,将年龄改为25后进行提交。
传统ORM框架会首先获取员工A的信息,生成一个对象,如图1-a,将对应的姓名、年龄、地点属性作为对象的属性进行存储。修改时传统ORM框架会根据对象各属性的值生成如下SQL语句:“update employee set name=xiaoming,age=25,place=Beijing where id=10”,并将修改后的SQL语句提交数据库。修改后的结果如图1-b所示。可以看到,传统ORM框架并没有判断实际修改了哪些字段,而是将对象所有的属性都加入了SQL语句,这导致SQL语句过长。
且,假设此时另一个用户也对员工A的资料进行了编辑,修改的对象还是原对象,如图2-a所示。用户将员工A的地点属性改为shanghai,则ORM框架会生成如下SQL语句:“update employee set name=xiaoming,age=24,place=shanghaiwhere id=10”。此时,提交修改后的SQL语句后的结果为图2-b所示。显然,前一个用户对员工A的修改被覆盖,此种情况下,即使修改时对相应行加锁也没用,后提交的仍会覆盖之前修改的结果,数据库中,该员工的年龄为24,地点为shanghai。
综上,现有ORM框架在程序对对象进行修改时,生成的SQL语句过长,且易造成先提交的修改结果被后提交的修改结果覆盖的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种SQL语句的生成方法及装置。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种SQL语句的生成方法,包括:
获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
创建所述待修改对象的快照;
当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
优选的,在所述获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值之后,所述方法还包括:
对所述待修改对象中的所有属性进行遍历,判断所述待修改对象中是否存在可变属性;
若是,执行所述创建所述待修改对象的快照;
若否,判定所述待修改对象不能被修改。
优选的,所述创建所述待修改对象的快照,包括:
对所述待修改对象中所有属性的属性值进行深拷贝,生成所述待修改对象的快照。
优选的,所述根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,包括:
对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
优选的,在所述生成对所述待修改对象进行修改的SQL语句之后,所述方法还包括:
将对所述待修改对象进行修改的SQL语句提交到数据库。
一种SQL语句的生成装置,包括:
第一获取单元,用于获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
创建单元,用于创建所述待修改对象的快照;
第二获取单元,用于当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
检测单元,用于根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
生成单元,用于根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
优选的,所述检测单元包括:
遍历子单元,用于对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
判断子单元,用于依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
优选的,所述装置还包括:
提交单元,用于将对所述待修改对象进行修改的SQL语句提交到数据库。
一种存储介质,所述存储介质包括存储的程序,
其中,在所述程序运行时控制所述存储介质所在的设备执行如上述中任一项所述的SQL语句的生成方法。
一种处理器,所述处理器用于运行程序,
其中,所述程序运行时执行如上述任一项所述的SQL语句的生成方法。
借由上述技术方案,本发明提供的一种SQL语句的生成方法,获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;创建所述待修改对象的快照,基于所述待修改对象的快照检测对已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;并根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句,由于SQL语句中仅仅涉及待修改对象中发生改变的属性,SQL语句较为简单,在并发情况下也可以避免先提交的修改结果被后提交的修改结果覆盖的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1-a示出了背景技术中第一次修改前的对象模型示意图;
图1-b示出了背景技术中第一次修改后的对象模型示意图;
图2-a示出了背景技术中第二次修改前的对象模型示意图;
图2-b示出了背景技术中第二次修改后的对象模型示意图;
图3示出了本发明实施例中公开的一种SQL语句的生成方法流程图;
图4-a示出了本发明实施例中公开的第一次修改待修改对象模型和待修改对象的快照示意图;
图4-b示出了本发明实施例中公开的第一次修改后的对象模型和待修改对象的快照示意图;
图5-a示出了本发明实施例中公开的第二次修改待修改对象模型和待修改对象的快照示意图;
图5-b示出了本发明实施例中公开的第二次修改后的对象模型和待修改对象的快照示意图;
图6示出了本发明实施例中公开的另一种SQL语句的生成方法流程图;
图7示出了本发明实施例中公开的一种SQL语句的生成装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
请参阅图3,图3为本实施例公开的一种SQL语句的生成方法流程图,具体包括以下步骤:
S101:获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
这里的对象为一种数据结构,对象包括多个属性,每个属性具有一个属性值。例如:“员工”为对象,具有姓名、年龄、工作地点等属性,姓名的属性值为xiaoming,年龄的属性值为24,工作地点的属性值为beijing。
待修改对象为用户需要进行修改的对象。
S102:创建所述待修改对象的快照;
具体的,对所述待修改对象中所有属性的属性值进行深拷贝,生成所述待修改对象的快照。
该快照是在获取待修改对象时创建的,后续不管待修改对象是否被修改,该待修改对象的快照保持不变,将对所述待修改对象进行修改的SQL语句提交到数据库后,该待修改对象的快照自动删除。
S103:当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
用户对所述待修改对象进行修改后,将对所述待修改对象的修改提交数据库,但不能直接提交到数据库,需要ORM架构等媒介根据已修改对象生成相应的SQL语句,才能成功提交到数据库。
S104:根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
S105:根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
可以理解的是,生成的对所述待修改对象进行修改的SQL语句仅仅涉及发生改变的属性。
为了对本实施例公开的SQL语句的生成方法进行进一步说明,以背景技术中对象“员工”为例,获取待修改对象时,请参阅图4-a,图4-a为待修改对象模型和待修改对象的快照,其中快照中的属性加’以与待修改对象的属性进行区分。当用户对待修改对象进行修改并将修改提交数据库后,对快照和对象属性进行对比。此例子可以看出,age和age’不相等,其他相同,则生成如下SQL语句:“update employee set age=25where id=10”。提交数据库后,最终得到的结果如图4-b所示,可以看出,该SQL语句只包含发生改变的属性,缩短了SQL语句的长度。
假设此时另一用户修改了“员工”的地点属性,其中,待修改对象模型和待修改对象的快照如图5-a所示,当用户对待修改对象进行修改并将修改提交数据库后,同样比对快照,place不等于place’,生成的SQL语句为:“update employee set place=shanghaiwhere id=10”。提交数据库后,最终得到的结果如图5-b所示,可以看出,此语句只更新了place值,即使与上面更新年龄的语句并发执行(无论是否有锁),最后数据库中的数据是正确的,年龄为25,地点为shanghai,避免先提交的修改结果被后提交的修改结果覆盖的问题。
本实施例公开了一种SQL语句的生成方法,获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;创建所述待修改对象的快照,基于所述待修改对象的快照检测对已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;并根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句,由于SQL语句中仅仅涉及待修改对象中发生改变的属性,SQL语句较为简单,在并发情况下也可以避免先提交的修改结果被后提交的修改结果覆盖的问题。
基于上述实施例公开的一种SQL语句的生成方法,请参阅图6,图6为本实施例公开的另一种SQL语句的生成方法流程图,具体包括以下步骤:
S201:获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
S202:对所述待修改对象中的所有属性进行遍历,判断所述待修改对象中是否存在可变属性;若否,执行S203,若是,执行S204;
S203:判定所述待修改对象不能被修改。
可以理解的是,只有待修改对象中存在可变属性时,待修改对象才能被修改,当待修改对象中不存在可变属性时,判定所述待修改对象不能被修改时,不存在创建待修改对象的快照等步骤,避免了不能修改对象时创建快照造成的资源浪费。
S204:创建所述待修改对象的快照;
S205:当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
S206:根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
S207:根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
优选的,S206的具体执行过程如下:
对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
先通过遍历已修改对象的所有属性,得到已修改对象的所有可变属性,再判断可变属性是否发生变化,避免了对已修改对象的每个属性都进行判断,提高了确定所述待修改对象中发生改变的属性的效率。
基于上述实施例公开的一种SQL语句的生成方法,请参阅图7,本实施例对应公开了一种SQL语句的生成装置,具体包括:
第一获取单元101,用于获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
创建单元102,用于创建所述待修改对象的快照;
第二获取单元103,用于当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
检测单元104,用于根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
生成单元105,用于根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
优选的,所述检测单元104包括:
遍历子单元,用于对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
判断子单元,用于依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
优选的,所述装置还包括:
提交单元,用于将对所述待修改对象进行修改的SQL语句提交到数据库。
本实施例公开了一种SQL语句的生成装置,获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;创建所述待修改对象的快照,基于所述待修改对象的快照检测对已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;并根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句,由于SQL语句中仅仅涉及待修改对象中发生改变的属性,SQL语句较为简单,在并发情况下也可以避免先提交的修改结果被后提交的修改结果覆盖的问题。
所述SQL语句的生成装置包括处理器和存储器,上述第一获取单元、创建单元、第二获取单元、检测单元和生成单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提高生成SQL语句的准确度。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述SQL语句的生成方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述SQL语句的生成方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
创建所述待修改对象的快照;
当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
进一步,在所述获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值之后,所述方法还包括:
对所述待修改对象中的所有属性进行遍历,判断所述待修改对象中是否存在可变属性;
若是,执行所述创建所述待修改对象的快照;
若否,判定所述待修改对象不能被修改。
进一步,所述创建所述待修改对象的快照,包括:
对所述待修改对象中所有属性的属性值进行深拷贝,生成所述待修改对象的快照。
进一步,所述根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,包括:
对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
进一步,在所述生成对所述待修改对象进行修改的SQL语句之后,所述方法还包括:
将对所述待修改对象进行修改的SQL语句提交到数据库。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
创建所述待修改对象的快照;
当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
进一步,在所述获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值之后,所述方法还包括:
对所述待修改对象中的所有属性进行遍历,判断所述待修改对象中是否存在可变属性;
若是,执行所述创建所述待修改对象的快照;
若否,判定所述待修改对象不能被修改。
进一步,所述创建所述待修改对象的快照,包括:
对所述待修改对象中所有属性的属性值进行深拷贝,生成所述待修改对象的快照。
进一步,所述根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,包括:
对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
进一步,在所述生成对所述待修改对象进行修改的SQL语句之后,所述方法还包括:
将对所述待修改对象进行修改的SQL语句提交到数据库。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种SQL语句的生成方法,其特征在于,包括:
获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
创建所述待修改对象的快照;
当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
2.根据权利要求1所述的方法,其特征在于,在所述获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值之后,所述方法还包括:
对所述待修改对象中的所有属性进行遍历,判断所述待修改对象中是否存在可变属性;
若是,执行所述创建所述待修改对象的快照;
若否,判定所述待修改对象不能被修改。
3.根据权利要求1所述的方法,其特征在于,所述创建所述待修改对象的快照,包括:
对所述待修改对象中所有属性的属性值进行深拷贝,生成所述待修改对象的快照。
4.根据权利要求1所述的方法,其特征在于,所述根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,包括:
对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
5.根据权利要求1所述的方法,其特征在于,在所述生成对所述待修改对象进行修改的SQL语句之后,所述方法还包括:
将对所述待修改对象进行修改的SQL语句提交到数据库。
6.一种SQL语句的生成装置,其特征在于,包括:
第一获取单元,用于获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;
创建单元,用于创建所述待修改对象的快照;
第二获取单元,用于当用户对所述待修改对象进行修改得到已修改对象时,获取所述已修改对象和所述已修改对象的每个属性值;
检测单元,用于根据所述待修改对象的快照中记录的每个属性值,对所述已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;
生成单元,用于根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句。
7.根据权利要求6所述的装置,其特征在于,所述检测单元包括:
遍历子单元,用于对所述已修改对象的所有属性进行遍历,得到所述已修改对象的所有可变属性;
判断子单元,用于依次判断所述已修改对象的每个可变属性的属性值与所述快照中记录的相应属性值相比是否发生改变,得到所述待修改对象中发生改变的属性、以及发生改变的属性的属性值。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
提交单元,用于将对所述待修改对象进行修改的SQL语句提交到数据库。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,
其中,在所述程序运行时控制所述存储介质所在的设备执行如权利要求1-5中任一项所述的SQL语句的生成方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,
其中,所述程序运行时执行如权利要求1-5中任一项所述的SQL语句的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711052564.XA CN110019266B (zh) | 2017-10-30 | 2017-10-30 | 一种sql语句的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711052564.XA CN110019266B (zh) | 2017-10-30 | 2017-10-30 | 一种sql语句的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019266A true CN110019266A (zh) | 2019-07-16 |
CN110019266B CN110019266B (zh) | 2021-06-29 |
Family
ID=67186730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711052564.XA Active CN110019266B (zh) | 2017-10-30 | 2017-10-30 | 一种sql语句的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019266B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296028B1 (en) * | 2004-04-30 | 2007-11-13 | Sap Ag | System and method for mapping object-oriented program code to a database layer |
CN101183387A (zh) * | 2007-12-14 | 2008-05-21 | 沈阳东软软件股份有限公司 | 一种增量数据捕获方法和*** |
CN102841889A (zh) * | 2011-06-20 | 2012-12-26 | 中兴通讯股份有限公司 | 一种基于orm架构的高效数据库访问的实现方法及装置 |
CN105550242A (zh) * | 2015-12-08 | 2016-05-04 | 方正移动传媒技术(北京)有限公司 | 关系数据库数据处理方法及装置 |
-
2017
- 2017-10-30 CN CN201711052564.XA patent/CN110019266B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296028B1 (en) * | 2004-04-30 | 2007-11-13 | Sap Ag | System and method for mapping object-oriented program code to a database layer |
CN101183387A (zh) * | 2007-12-14 | 2008-05-21 | 沈阳东软软件股份有限公司 | 一种增量数据捕获方法和*** |
CN102841889A (zh) * | 2011-06-20 | 2012-12-26 | 中兴通讯股份有限公司 | 一种基于orm架构的高效数据库访问的实现方法及装置 |
CN105550242A (zh) * | 2015-12-08 | 2016-05-04 | 方正移动传媒技术(北京)有限公司 | 关系数据库数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110019266B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3353672B1 (en) | Method and apparatus for transferring data between databases | |
CN104123126B (zh) | 一种用于生成合并冲突记录列表的方法和装置 | |
CN104423961B (zh) | 一种生成测试脚本的方法及*** | |
JP6651502B2 (ja) | 製品、材料及び製造工程の統合化された設計向けのモデルを活用した計算プラットフォーム | |
CN104657274B (zh) | 软件界面测试方法及装置 | |
CN109460540A (zh) | 一种表格分页显示方法及装置 | |
CN109657427A (zh) | 权限控制的方法及装置 | |
CN110019111A (zh) | 数据处理方法、装置、存储介质以及处理器 | |
Athanasiou et al. | Big POI data integration with Linked Data technologies. | |
US20120159515A1 (en) | Sharing object representations | |
CN104951410A (zh) | 一种芯片信息的访问方法和装置 | |
CN109346079A (zh) | 基于声纹识别的语音交互方法及装置 | |
CN108241620B (zh) | 查询脚本的生成方法及装置 | |
CN111427863A (zh) | 一种基于领域模型的数据迁移方法、装置及设备 | |
CN107861751A (zh) | 配置文件的修改方法及装置 | |
CN109388644A (zh) | 一种数据更新方法及装置 | |
CN109977317B (zh) | 数据查询方法及装置 | |
CN106033390A (zh) | 一种邮件样式测试方法和装置 | |
CN106021087B (zh) | 代码检测方法及装置 | |
CN110019266A (zh) | 一种sql语句的生成方法及装置 | |
CN110019357A (zh) | 数据库查询脚本生成方法及装置 | |
CN107644086A (zh) | 空间数据的分布方法 | |
CN111126961B (zh) | 一种复杂产品全生命周期数字主线服务*** | |
CN109542401A (zh) | 一种Web开发方法、装置、存储介质及处理器 | |
CN109299125A (zh) | 数据库更新方法及装置 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100080 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |