一种业务数据保存方法及装置 【技术领域】
本发明涉及业务处理技术领域,特别是涉及一种业务数据保存方法及装置。
背景技术
在业务应用系统中,用户通过系统界面查看并操作业务数据。例如人力资源系统中,用户为某员工新增工作履历时,首先会查看该员工的详细信息,然后在工作履历中新增一条最近的工作信息,最后保存完成操作。在这个过程中,对应的系统业务数据处理流程如图1所示。
其中,具体的数据处理流程包括以下步骤:首先,将数据从数据库中取出并进行显示前处理,例如将日期数据的格式由2008‑01‑01转换为2008年1月1日。然后将数据显示在系统界面上,用户在界面上对数据进行编辑,在数据被提交后进行保存前处理,例如将编辑后的日期数据2008年2月1日又转换为2008‑02‑01,最后数据被保存到数据库中。
在所述业务数据处理流程中,数据保存到数据库是非常重要的环节,它确保了业务数据的持续性。目前存在的数据保存方法主要是通过对象与关系数据库映射的方式来实现。
对象与关系数据库映射方式处理数据的过程包括:首先,通过配置文件将业务数据映射到关系数据库中,例如在配置文件中描述人员信息中包括的姓名、工资、学历数据项分别对应的是人员表中的NAME、SALARY、EDUCATION字段;然后,从用户界面获取业务数据后形成相应的业务数据对象;最后,在保存时,直接保存业务数据对象即可,系统会根据对象与关系数据库映射配置来自动组装出相应的SQL并执行来实现数据保存功能。
但是,利用上述对象与关系数据库映射方式更新数据时,通过配置文件映射好的所有数据都会更新到数据库表中。例如,在配置文件中,姓名、工资、学历与数据库表中的NAME、SALARY、EDCATION相对应,如果用户在员工信息界面中,只希望编辑人员的姓名、工资基本信息,则会将姓名项、工资项进行赋值,学历信息不需要编辑。但是,如果学历项不进行如何处理,则在将数据保存到数据库表时,系统会自动将学历项赋值为默认值(如NULL等),使得数据库表中保存的学历信息发生变化。因此,为了确保学历信息不变,也不得不同时维护学历信息,这就需要增加一次数据库查询操作,然后将查询出的学历信息赋值给学历项,最后再保存数据以保证结果正确,从而带来了额外的维护开销。
【发明内容】
有鉴于此,本发明的目的在于提供一种业务数据保存方法及装置,能够在不增加额外的维护开销的情况下,保证数据保存的正确性。
为实现上述目的,本发明提供了如下方案:
一种业务数据保存方法,包括:
接收用户提交业务数据;
判断各数据项对应的值是否需要保存;
根据对象与关系数据库映射配置,对需要保存的数据项对应的值组装SQL,以将需要保存的数据项对应的值保存到数据库表中相应的字段。
优选的,所述判断各数据项对应的值是否需要保存包括:
判断数据项是否带有预置的保存标识,如果是,则该数据项对应的值需要保存。
优选的,所述判断数据项是否带有预置的保存标识包括:
接收用户设置的数组,如果某数据项出现在所述数组中,则该数据项对应的值需要保存。
优选的,所述判断各数据项对应的值是否需要保存包括:
遍历所有数据项对应的值;
将所述数据项对应的值与预置的值进行比较;如果数据项对应的值与所述预置的值相等,则该数据项对应的值不需要保存,否则,该数据项对应的值需要保存,所述预设的值为与所述数据项类型相同且固定的值。
一种业务数据保存装置,包括:
接收单元,用于接收用户提交业务数据;
判断单元,用于判断各数据项是否需要保存;
保存单元,用于根据对象与关系数据库映射配置,对需要保存的数据项对应的值组装SQL,以将需要保存的数据项对应的值保存到数据库表中相应的字段。
优选的,所述判断单元包括:
第一判断子单元,用于判断数据项是否带有预置的保存标识,如果是,则该数据项需要保存。
优选的,所述第一判断子单元包括:
接收子单元,用于接收用户设置的数组,如果某数据项出现在所述数组中,则该数据项对应的值需要保存。
优选的,所述判断单元包括:
遍历子单元,用于遍历所有数据项对应的值;
第二判断子单元,用于将所述数据项对应的值与预置的值进行比较;如果数据项对应的值与所述预置的值相等,则该数据项对应的值不需要保存,否则,该数据项对应的值需要保存,所述预设的值为与所述数据项类型相同且固定的值。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明能够在接收到用户提交的数据项之后,判断各数据项对应的值是否需要保存,如果需要,则将该数据项对应的值组装成SQL,否则,不会将数据项对应的值组装成SQL。因此,不用维护不需更新的数据项数据,就可以保证保存后数据库表中结果的正确性。避免了查询出不需更新的数据,再重新保存到数据库等步骤,因此,不会增加额外的维护开销。
另外,本发明实施例可以通过判断数据项是否带有预置的保存标识。来判断数据项对应的值是否需要保存,因此,用户在保存数据之前只需为需要保存的数据项设置保存标识即可,易于实现。另外,对于数据项较多的情况,也可以采用设置规则的方式来进行,在该方式下,用户不需要对所有需要保存的数据项逐一添加保存标识,系统可以利用规则自动判断出需要保存的数据项,并组装相应的SQL,完成业务数据的保存,便于处理数据项多的业务数据。
【附图说明】
图1是业务数据处理流程图;
图2是本发明实施例提供的方法的流程图;
图3是不同场合下界面显示与数据库表对应关系示意图;
图4是本发明实施例提供的装置的示意图。
【具体实施方式】
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参见图2,本发明实施例提供的业务数据保存方法包括以下步骤:
S201:接收用户提交的业务数据;
用户在不同场合处理数据时,对同一业务对象,其所关注的具体数据项可能不一样。例如,在查看员工张三薪酬时,关注员工姓名、工资数据项;在查看员工张三学历情况时,关注员工姓名、学历数据项。而在两种情况下,对应到数据库中的都是同一张表的同一条记录,但是在员工信息界面显示的内容有所不同,如图3所示。从图3可以看出,对于数据库表中同一记录,在不同业务场景下的显示方式是不一样的,因此在对数据项进行编辑之后,对应的数据保存方式也会不同。
本发明实施例所述用户提交的业务数据就是上述不同的场合下,用户对关注的数据项的值进行编辑之后,为了保存更新后的数据项对应的值,需要提交的业务数据。例如,对工资数据项对应的值进行了编辑,则提交编辑后工资数据项对应的值。
S202:判断各数据项对应的值是否需要保存;
S203:根据需要保存的数据项对应的值,以及对象与关系数据库映射配置组装SQL,将需要保存的数据项对应的值保存到数据库表中相应的字段。
本发明实施例是在通过对象与关系数据库映射方式保存业务数据的基础上进行的改进。在用户提交数据项之后,保存之前,系统会自动将用户未赋值的数据项对应的值赋值为默认值。例如,用户将姓名、工资数据项对应的值进行了编辑,学历数据项对应的值不需要更新,因此,没有对该数据项进行赋值。但是,用户在提交数据项之后,为了通过对象与关系数据库映射的方式来完成数据的保存,系统会自动将学历数据项赋值为默认值(如NULL),以保证在预置的映射配置中,关系数据库中的每个字段都能找到相应的对象实例,否则可能会无法正常执行。
此时,在现有技术的方案中,就会根据对象与关系数据库映射配置,以及全部数据项对应的值(包括系统赋予的默认值及用户编辑的值),来组装SQL,并通过所述SQL,将学历数据项被赋予的默认值与用户编辑的姓名、工资数据项对应的值一起更新到数据库表中,使得数据库表中的学历数据项对应的值变为所述默认值,导致数据库表中的信息发生错误。
而本发明实施例中,在根据对象与关系数据库映射配置组装SQL之前,需要首先判断各数据项哪些是需要保存的,然后,只根据需要保存的数据项对应的值,以及对象与关系数据库映射配置组装SQL,这样,就能够将需要保存的数据项对应的值保存到数据库表中相应的字段,而对于不需要保存的数据项的值,数据库表中对应的值将不会发生变化。
可见,在本发明实施例中,系统可以自动判断各数据项对应的值是否需要保存,然后只将需要保存的数据项的值更新到数据库中,因此,不用维护不需更新的数据项数据,就可以保证保存后数据库表中结果的正确性,避免了查询出不需更新的数据,在重新保存到数据库等步骤,因此,不会增加额外的维护开销。
具体判断各数据项对应的值是否需要保存的方法可以有多种,下面仅通过两种具体的实施方式进行详细地介绍。
具体实施方式一:
在该具体实施方式一中,可以判断数据项是否带有预置的保存标识,如果是,则该数据项对应的值需要保存。即,预先为数据项添加标识,系统可以根据该标识判断该数据项对应的值是否需要保存。具体添加标识的方式可以有多种,例如,可以是用户根据需要添加的。具体的,用户对某些数据项对应的值进行编辑之后,在保存数据之前,可以通过数组的方式设置哪些数据项是需要保存的,系统根据对象与关系数据库映射配置来自动组装出相应的SQL前,会排除不需要保存的数据项,从而达到了保存指定数据项的效果。
例如,用户需要更新姓名及工资数据项对应的值进行更新,则可以将“姓名”及“工资”添加到数组中,这样,系统就可以获知姓名及工资数据项对应的值是需要保存的,然后,在组装SQL时,就会将学历等其他数据项作为不需要保存的数据项而排除,值执行SQL时,会根据预置的对象与关系数据库映射配置,仅更新NAME及SALARY字段的值,而与学历对应的“EDUCATION”字段的值不会发生变化。
在这种具体实施方式一下,例如,业务数据保存之前的状态如表1所示。
表1
用户仅需要保存人员信息表中的姓名的工资,因此,可以在数组中设置{姓名、工资};进行数据保存时,根据数组中的设置,判断出需要保存的数据项是姓名和工资数据项,然后生成相应的SQL,利用该SQL就可以仅将人员信息表中的姓名和工资数据项对应的值保存到数据库表中。保存后的业务数据状态如表2。
表2
从上述表2可以看出,对于用户不需要更新的学历数据项,数据库表中对应字段的值不会发生变化,因此,可以保证数据库中信息的准确性。
利用上述具体实施方式一,可以灵活设置所需保存的业务数据项,方便针对在不同用户界面显示的同一数据库记录进行不同的数据保存处理,而且不会给系统带来额外的维护开销。
具体实施方式二:
在上述具体实施方式一中,对于需要保存的数据项需要一项一项进行设置,例如,将各个需要保存的数据项都写入到数组中等。但是在实际应用中,有些业务数据的数据项可能非常多,例如,人员信息可能包含姓名、性别、年龄等近百个数据项,需要保存的也可能有很多,但是,如果逐一设置保存标识,将可能会造成时间上的额外开销。因此,对于数据项较多的情况,本发明实施例提出了具体实施方式二。
在该具体实施方式二中,考虑到系统会自动将用户没有进行赋值的数据项自动赋值为默认值,例如,会将字符型的数据项的值赋值为NULL,或者,将数值型的数据项的值赋值为0,等等,但实际上,这些默认值的个数有限(因为数据类型是有限的),而且是不需要也不应该被保存到数据库表中的。该具体实施方式就是利用上述特点提出的。
具体的,用户可以在设置规则来达到让系统识别出需要保存的数据项的目的。其中,所述规则可以是多个值的组合,如空字符串、0或任意指定值,等等。系统在接收到用户提交的数据项之后,可以首先遍历各个数据项对应的值,并将所述各个数据项对应的值与所述规则中的值进行比对,如果相等,则认为该数据项是不需要保存的,否则,该数据项需要保存。然后,根据需要保存的数据项对应的值,以及对象与关系数据库映射配置组装SQL,将需要保存的数据项对应的值保存到数据库表中相应的字段。由此,具体实施方式二也实现了通过业务对象来保存数据时可以指定所需更新的数据项的功能。
在这种具体实施方式一下,例如,业务数据保存之前的状态如表3所示。
表3
用户仅需要保存人员信息表中的姓名的工资,因此,没有对学历数据项进行赋值,但是系统会自动将学历数据项对应的值赋值为NULL,因此,设置规则为字符串值为空的数据不进行更新;数据保存时,系统会根据用户设置的规则对各个数据项对应的值与规则中的值进行比对,判断出姓名和年龄数据项对应的值需要保存,而学历数据项对应的值不需要进行保存,组装成相应的SQL,利用该SQL就可以仅将人员信息表中的姓名和工资数据项对应的值保存到数据库表中。保存后的业务数据状态如表4。
表4
从上述表4可以看出,对于用户不需要更新的学历数据项,数据库表中对应字段的值不会发生变化,因此,可以保证数据库中信息的准确性。
当然,如果是多个不同数据类型的数据项都不需要保存,也可以根据数据类型设置多个规则。例如,年龄和学历数据项对应的值都不需要保存,此时,年龄对应的是数据类型是数值型,而学历对应的数据类型是字符型,因此,系统会将年龄对应的值自动赋值为默认值0,并将学历对应的值自动赋值为默认值NULL,相应的,设置的规则可以为:数值为0的数据不进行更新,字符串值为空的数据不进行更新。
可见,通过本发明具体实施方式二,可以与规则结合后,对数据项多的数据按照规则进行自动设置,方便处理数据项多的业务数据。
与本发明实施例提供的业务数据保存方法相对应,本发明实施例还提供了一种业务数据保存装置,参见图4,该装置包括:
接收单元U401,用于接收用户提交业务数据;
判断单元U402,用于判断各数据项是否需要保存;
保存单元U403,用于根据需要保存的数据项对应的值,以及对象与关系数据库映射配置组装SQL,将需要保存的数据项对应的值保存到数据库表中相应的字段
利用本发明实施例提供的装置,系统可以自动判断各数据项对应的值是否需要保存,然后只将需要保存的数据项的值更新到数据库中,因此,不用维护不需更新的数据项数据,就可以保证保存后数据库表中结果的正确性,避免了查询出不需更新的数据,在重新保存到数据库等步骤,因此,不会增加额外的维护开销。
具体实现时,可以通过多种方式来判断数据项对应的值是否需要保存。具体的,可以通过为数据项设置保存标识的方式来实现,此时,判断单元U402可以包括:
第一判断子单元,用于判断数据项是否带有预置的保存标识,如果是,则该数据项需要保存。
在利用添加保存标识的方式实现判断时,具体的,用户可以将需要保存的数据项写入数组中,此时,所述第一判断子单元可以包括:
接收子单元,用于接收用户设置的数组,如果某数据项出现在所述数组中,则该数据项对应的值需要保存。
此外,也可以采用预置规则的方式来判断数据项是否需要被保存,此时,判断单元U402可以包括:
遍历子单元,用于遍历所有数据项对应的值;
第二判断子单元,用于将所述数据项对应的值与预置的值进行比较;如果数据项对应的值与所述预置的值相等,则该数据项对应的值不需要保存,否则,该数据项对应的值需要保存。
以上对本发明所提供的一种业务数据保存方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。