[发明专利]一种SQL语句的生成方法及装置有效
申请号: | 201711052564.X | 申请日: | 2017-10-30 |
公开(公告)号: | CN110019266B | 公开(公告)日: | 2021-06-29 |
发明(设计)人: | 焦惠达 | 申请(专利权)人: | 北京国双科技有限公司 |
主分类号: | G06F16/23 | 分类号: | G06F16/23;G06F16/242 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
地址: | 100080 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sql 语句 生成 方法 装置 | ||
本发明公开了一种SQL语句的生成方法,获取待修改对象、所述待修改对象的每个属性、以及每个属性的属性值;创建所述待修改对象的快照,基于所述待修改对象的快照检测对已修改对象的每个属性值进行检测,确定所述待修改对象中发生改变的属性、以及发生改变的属性的属性值;并根据所述待修改对象中发生改变的属性、以及发生改变的属性的属性值,生成对所述待修改对象进行修改的SQL语句,由于SQL语句中仅仅涉及待修改对象中发生改变的属性,SQL语句较为简单,在并发情况下也可以避免先提交的修改结果被后提交的修改结果覆盖的问题。
技术领域
本发明涉及数据库技术领域,更具体的,涉及一种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语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京国双科技有限公司,未经北京国双科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711052564.X/2.html,转载请声明来源钻瓜专利网。