1.本说明书涉及服务开发技术领域,尤其涉及一种动态导出字段的方法、装置、设备及介质。
背景技术:
2.随着国内互联网技术产业的飞速发展,多用途的运用平台应运而生,大批量多样化的数据分析和信息存储,是我们现在管理平台的主要使用方式。数据导出在其中更是重要功能之一。
3.目前,常见的数据导出方式包括有后台固定数据的方式,即直接固定需要导出的数据后全部导出的方式。该方式在数据量大或者字段量过多时会导致数据的导出速度过慢、超时甚至内存溢出的问题。另一种方式是前端筛查的方式,在传输参数时将需求参数一并传入后台,在后台接收后作为条件去数据库查找符合条件的数据。该方式在字段量大时,也会导致超时和内存溢出的问题。
4.因此,需要一种可以实现多数据量字段快速导出的方法。
技术实现要素:
5.本说明书一个或多个实施例提供了一种动态导出字段的方法、装置、设备及介质,用于解决如下技术问题:如何提供一种实现多数量字段快速导出的方法。
6.本说明书一个或多个实施例采用下述技术方案:
7.本说明书一个或多个实施例提供一种动态导出字段的方法,方法包括:
8.使用控制类接收客户端的对象,获得所述客户端所需的控制类对象;其中,所述控制类对象为预设数据表格中的对应字段;
9.基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合;
10.根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组;
11.基于所述动态数据组获取所述各指定对象的动态属性集合;
12.获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
13.在本说明书一个或多个实施例中,所述使用控制类接收客户端的对象,获得所述客户端所需的控制类对象之前,所述方法还包括:
14.所述客户端展示所述预设表格中的组成字段,以根据所述组成字段确定所述预设表格中符合用户需求的字段,并设置所述符合用户需求的字段以及其他字段所对应的属性值,以便后台控制类接收所述客户端的对象。
15.在本说明书一个或多个实施例中,所述根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组,具体包括:
16.根据所述符合用户需求的字段以及所述其他字段对应的属性值,确定所述对象属性集合中各个对象属性所对应的属性值;
17.判断所述各个对象属性所对应的属性值是否为空,获得对应的判断结果;
18.若基于所述判断结果确定所述对应的属性值不为空,则将所述对象属性及对应的属性值写入所述各指定对象相应的动态数据组;
19.若基于所述判断结果确定所述对应的属性值为空,则将所述对象属性及对应的属性值筛除。
20.在本说明书一个或多个实施例中,所述基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合,具体包括:
21.依次获取所述控制类对象中各指定对象;
22.基于所述预设反射机制的成员获取方式,获取所述各指定对象的对应字段;
23.确定所述对应字段的字段信息,以将根据所述字段信息构成所述各指定对象的对象属性集合。
24.在本说明书一个或多个实施例中,所述获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出之前,所述方法还包括:
25.生成与所述动态属性集合相对应的预设表格的表头数据,以根据所述表头数据将所述动态属性集合中各个对象属性对应的属性名称存放到预设容器中;其中所述表头数据与所述属性值以键值的形式相对应;
26.根据所述属性值获取所述表头数据中各个对象数据对应的属性名称,以便将所述属性动态导出到预设表格中。
27.在本说明书一个或多个实施例中,所述据所述属性名称导出与对应的属性,以完成所述属性的动态导出,具体包括:
28.获取所述预设数据表格中与所述属性名称相对应的目标行,以及所述目标行所对应的目标列中的数据;
29.根据所述目标列中的数据以及所述数据所处单元格的位置标识,确定键值对数据,以便所述属性名称基于所述键值对数据,导出对应的属性到所述预设数据表格,完成所述属性的动态导出。
30.在本说明书一个或多个实施例中,所述导出对应的属性到所述预设数据表格之前,所述方法还包括:
31.确定所述预设数据表格中待导入所述属性的单元格区域;
32.若所述单元格区域中存在与所述属性名称相对应的目标行,则基于所述属性与所述键值对数据,将所述属性写入所述单元格区域中与所述目标行下所在列的对应单元格内;
33.若所述单元格区域中不存在与所述属性名称相对应的目标行,则在所述预设数据表格中构建所述目标行,并基于所述属性与所述键值对数据,将所述属性写入所述单元格区域中与所述目标行下所在列的对应单元格内。
34.本说明书一个或多个实施例提供一种动态导出字段的装置,装置包括:
35.第一获取模块,用于使用控制类接收客户端的对象,获得所述客户端所需的控制
类对象;其中,所述控制类对象为预设数据表格中的对应字段;
36.第二获取模块,用于基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合;
37.确定模块,用于根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组;
38.第三获取模块,用于基于所述动态数据组获取所述各指定对象的动态属性集合;
39.导出模块,用于获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
40.本说明书一个或多个实施例提供一种动态导出字段的设备,包括:
41.至少一个处理器;以及,
42.与所述至少一个处理器通信连接的存储器;其中,
43.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
44.使用控制类接收客户端的对象,获得所述客户端所需的控制类对象;其中,所述控制类对象为预设数据表格中的对应字段;
45.基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合;
46.根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组;
47.基于所述动态数据组获取所述各指定对象的动态属性集合;
48.获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
49.本说明书一个或多个实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
50.使用控制类接收客户端的对象,获得所述客户端所需的控制类对象;其中,所述控制类对象为预设数据表格中的对应字段;
51.基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合;
52.根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组;
53.基于所述动态数据组获取所述各指定对象的动态属性集合;
54.获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
55.本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
56.根据属性名称导出对应的属性,减少用户使用手动筛查导出信息的操纵,减少导出时间,避免超时。基于对象属性集合确定各个指定对象的动态数据组,并基于反射及机制实现数据的动态灵活导出,实现精准字段查询,可以有效避免大量数据查询下引起的超时和内存溢出问题,避免繁琐的数据编辑与处理过程。
附图说明
57.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
58.图1为本说明书实施例提供的一种动态导出字段的方法流程示意图;
59.图2为本说明书实施例提供的一种应用场景下反射机制分析对象生成数据的流程示意图;
60.图3为本说明书实施例提供的一种动态导出字段的装置内部结构示意图;
61.图4为本说明书实施例提供的一种动态导出字段的设备内部结构示意图;
62.图5为本说明书实施例提供的一种非易失性存储介质的内部结构示意图。
具体实施方式
63.本说明书实施例提供一种动态导出字段的方法、装置、设备及介质。
64.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
65.如图1所示,本说明一个或多个实施例提供了一种动态导出字段的方法。
66.本方案应用于多种需要大批量多样化数据分析的应用领域,例如需要书籍统计的图书馆书库汇总系统,需要导出各类收支的会记领域等,本方案由各个需要导出数据的领域中系统的后台服务器或各执行单元执行。由图1可知,方法包括以下步骤:
67.s101:使用控制类接收客户端的对象,获得所述客户端所需的控制类对象;其中,所述控制类对象为预设数据表格中的对应字段。
68.随着大数据时代的到来以及互联网技术的飞速发展,实际应用的各种业务系统中包含了大量的业务报表数据,并常常有业务相关报表导出excel表格的需求。目前常见的数据导出方式,主要包括以下两种情况:
69.一是后台固定数据的方式,即根据产品设计直接固定需要导出的数据,然后全部导出。在少量的数据字段的情况下会导致导出过慢,超时甚至内溢的情况,不能够满足用户的需求。
70.二是前端筛查的方式,及在传入参数时,将需求参数一并传入后台,后台接收后作为条件去数据库查找符合条件的数据。这是目前常用的筛查手段,可以满足用户的查询需求。但是导出的数据模板是固定的,也就是用户没法根据自己的需求控制导出的字段,如若全字段导出,在导出字段量大时,也会导致超时和内存溢出的情况,同时用户需要对自己所需的数据进行手动筛选,无疑变相的增加了工作量。而在导出多个类时,需要根据不同的类来写业务代码,业务重复且不可替换,使得代码冗杂,不易梳理,不能灵活变通。
71.为了解决上述问题,提供一种实现多数据量字段快速导出的方式,本方案基于对象和反射机制,可以直接应对不同的类,不同情况下的导出,大幅度减少业务处理过程重复
性工作,简化代码实现多数据量字段的快速导出。首先后台使用控制类接收哭护短的对象,获得客户端所需要的控制类对象。为了实现字段导出到对应的预设数据表格也就是excel中,控制类对象为预设表格中的对应字段。
72.在本说明书一个或多个实施例中,使用控制类接收客户端的对象,获得客户端所需的控制类对象之前,客户端需要将对象传输给后台,方法包括以下步骤:
73.客户端展示预设表格中的组成字段的所有字段信息,从而根据所述组成字段确定所述预设表格中符合用户需求的字段。并通过设置符合用户需求的字段以及其他字段所对应的属性值,使得后台控制类接收所述客户端的对象。此时需要注意的是,前端及客户端与后台对象属性之间的对应关系,以确保后续正确导出所需字段。
74.在一种应用场景下,方法包括:客户端展示预设数据表格中所有字段信息后,用户可以通过自己的需求,有选择的勾选自己所需的字段。然后对选择出的有需要的字段设置初始值,而不需要的字段则可以设置为空,将字段作为对象以使后台接收选择后的对象。
75.s102:基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合。
76.反射机制是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。通过反射机制可以访问java对象的属性、方法、构造方法等。所以根据预先设置的反射机制可以根据java语言中的getclass方法获取到控制类中的指定对象,从而将指定类作为父类基于反射获取该指定类所包含的字段进行遍历,以便获取各个指定对象对应的对象属性集合。
77.s103:根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组。
78.由上述步骤s101可知,后台接收的对象中包含了符合用户需求的字段,以及不符合用户需求的其他字段。而为了减少手动筛查实现灵活导出信息,需要根据属性值对各指定对象中的属性进行筛选,以便获取预设数据表格所需要的符合用户需求的字段,实现字段的灵活导出。如图2所示,本说明书一个或多个实施例中,提供了一种应用场景下反射机制分析对象生成数组的流程示意图。由图2可知,在本说明书一个或多个实施例中,根据对象属性集合中各个属性对应的属性值,确定与各指定对象相对应的动态数据组,具体包括以下步骤:
79.首先根据上述步骤s101中设置的符合用户需求的字段以及其他字段对应的属性值,确定出对象属性集合中各个对象属性所对应的属性值。然后,判断出各个对象属性所对应的属性值是否为空,获得对应的判断结果。如果根据判断结果确定对应的属性值不为空,则将对象属性及对应的属性值写入各指定对象相应的动态数据组。而如果根据判断结果确定对应的属性值为空,则将对象属性及对应的属性值筛除。其中,可以理解的是,属性值为空则为不需要字段,而属性值不为空则为需要导出字段。
80.s104:基于所述动态数据组获取所述各指定对象的动态属性集合。
81.根据上述步骤s103获取各指定对象相对应的动态数据组之后,为了满足不同类的不同导出需求,直接获取各对象所需要的导出属性集合。在本说明书一个或多个实施例中,基于预设反射机制依次获取控制类对象中,各指定对象的动态属性集合,具体包括以下步骤:首先获取控制类对象中各指定对象,然后根据预设反射机制的成员获取方式,获取到各
指定对象的对应字段。然后再确定出各指定对象所对应字段的字段信息,从而将将确定出的字段信息进行组合,构成各指定对象所需要导出的对象属性集合。
82.s105:获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
83.为了灵活导出大量字段到对应的预设数据表格中,有效的避免大量数据查询下引起的超时和内存溢出问题。在本说明书一个或多个实施例中,获取动态属性集合中各个对象属性对应的属性名称,以根据属性名称导出与对应的属性,完成属性的动态导出之前,方法还包括:
84.在生成动态属性集合的同时,生成和动态属性集合相对应的预设表格的表头数据。可以根据表头数据将动态属性集合中,各个对象属性对应的属性名称存放到预设容器中。其中,需要说明的是表头数据与所述属性值以键值的形式相对应。在判断属性值时,根据属性值获取表头数据中各个对象数据对应的属性名称,以便将属性动态导出到预设表格中。其中,预设容器为map,而map的存在方式如:username:用户姓名,主要用于用户在获取属性集合的同时生成对应值属性名称,在导出excel时填充表头。
85.具体地,在本说明书一个或多个实施例中,根据所述属性名称导出与对应的属性,以完成所述属性的动态导出,具体包括:先获取预设数据表格中和属性名称相对应的目标行,以及该目标行所对应的目标列中的数据。然后根据目标列中的数据以及数据所处单元格的位置标识,确定键值对数据。以便属性名称基于键值对数据,导出对应的属性到预设数据表格,完成属性的动态导出。
86.为了保证所需字段可以导出到预设数据表格中,在本说明书一个或多个实施例中,导出对应的属性到预设数据表格之前,需要判断该预设数据表格中是否存在可以存储该字段的位置,具体的方法包括以下步骤:先确定预设数据表格中待导入属性的单元格区域,如果在预设数据表格的单元格区域中存在和属性名称相对应的目标行,则根据属性与键值对数据,可以将属性写入单元格区域中与目标行下所在列的对应单元格内。而如果单元格区域中不存在与所述属性名称相对应的目标行,则在所述预设数据表格中构建所述目标行,并基于所述属性与所述键值对数据,将所述属性写入所述单元格区域中与所述目标行下所在列的对应单元格内。
87.在本说明书一个或多个实施例中,利用反射获取的对象属性集合,可以直接用于填充查询机构化语言sql,实现部分查询,精准的字段查询返回的数据集比全部查询消耗的资源少,可以有效的减少数据检索的时间。通过反射类工具直接得到用于导出的对象属性集合,填充预设数据表格的header集合和精准查询sql字段。如果将headers,设定为“类型,书名,地址,取书时间、五彩石个数”根据各字段的属性值key,可以获得对应的表头数据。则如下表1所示为一种应用场景下导出的表格数据。该过程由于属性与字段之间一一对应的关系,有效减少了处理数据的整合过程。
[0088][0089]
表1.一种应用场景下导出的表格数据
[0090]
如图3所示,在本说明一个或多个实施例中,提供了一种动态导出字段的装置的内部结构示意图。
[0091]
由图3可知,装置包括:
[0092]
第一获取模块301,用于使用控制类接收客户端的对象,获得所述客户端所需的控制类对象;其中,所述控制类对象为预设数据表格中的对应字段;
[0093]
第二获取模块302,用于基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合;
[0094]
确定模块303,用于根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组;
[0095]
第三获取模块304,用于基于所述动态数据组获取所述各指定对象的动态属性集合;
[0096]
导出模块305,用于获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
[0097]
在本说明书一个或多个实施例中,所述装置还包括:展示模块;
[0098]
所述展示模块用于所述客户端展示所述预设表格中的组成字段,以根据所述组成字段确定所述预设表格中符合用户需求的字段,并设置所述符合用户需求的字段以及其他字段所对应的属性值,以便后台控制类接收所述客户端的对象。
[0099]
在本说明书一个或多个实施例中,所述确定模块具体包括:属性确定模块、判断模块、第一写入模块、筛除模块;
[0100]
所述属性确定模块,用于根据所述符合用户需求的字段以及所述其他字段对应的属性值,确定所述对象属性集合中各个对象属性所对应的属性值;
[0101]
所述判断模块,用于判断所述各个对象属性所对应的属性值是否为空,获得对应的判断结果;
[0102]
所述第一写入模块,用于若基于所述判断结果确定所述对应的属性值不为空,则将所述对象属性及对应的属性值写入所述各指定对象相应的动态数据组;
[0103]
所述筛除模块,用于若基于所述判断结果确定所述对应的属性值为空,则将所述对象属性及对应的属性值筛除。
[0104]
在本说明书一个或多个实施例中,所述第二获取模块,具体包括:第四获取模块、第五获取模块、构成模块;
[0105]
所述第四获取模块,用于依次获取所述控制类对象中各指定对象;
[0106]
所述第五获取模块,用于基于所述预设反射机制的成员获取方式,获取所述各指定对象的对应字段;
[0107]
所述构成模块,用于确定所述对应字段的字段信息,以将根据所述字段信息构成所述各指定对象的对象属性集合。
[0108]
在本说明书一个或多个实施例中,所述第三获取模块,具体包括:生成模块、名称获取模块;
[0109]
所述生成模块,用于生成与所述动态属性集合相对应的预设表格的表头数据,以根据所述表头数据将所述动态属性集合中各个对象属性对应的属性名称存放到预设容器中;其中所述表头数据与所述属性值以键值的形式相对应;
[0110]
所述名称获取模块,用于根据所述属性值获取所述表头数据中各个对象数据对应的属性名称,以便将所述属性动态导出到预设表格中。
[0111]
在本说明书一个或多个实施例中,所述导出模块,具体包括:第六获取模块、键值确定模块;
[0112]
所述第六获取模块,用于获取所述预设数据表格中与所述属性名称相对应的目标行,以及所述目标行所对应的目标列中的数据;
[0113]
所述键值确定模块,用于根据所述目标列中的数据以及所述数据所处单元格的位置标识,确定键值对数据,以便所述属性名称基于所述键值对数据,导出对应的属性到所述预设数据表格,完成所述属性的动态导出。
[0114]
在本说明书一个或多个实施例中,所述装置还包括:区域确定模块、第二写入模块、第三写入模块;
[0115]
所述区域确定模块,用于确定所述预设数据表格中待导入所述属性的单元格区域;
[0116]
所述第二写入模块,用于若所述单元格区域中存在与所述属性名称相对应的目标行,则基于所述属性与所述键值对数据,将所述属性写入所述单元格区域中与所述目标行下所在列的对应单元格内;
[0117]
所述第三写入模块,用于若所述单元格区域中不存在与所述属性名称相对应的目标行,则在所述预设数据表格中构建所述目标行,并基于所述属性与所述键值对数据,将所述属性写入所述单元格区域中与所述目标行下所在列的对应单元格内。
[0118]
如图4所示,本说明书一个或多个实施例中,提供了一种动态导出字段的设备内部结构示意图。
[0119]
由图4可知,设备包括:
[0120]
至少一个处理器401;以及,
[0121]
与所述至少一个处理器401通信连接的存储器402;其中,
[0122]
所述存储器402存储有可被所述至少一个处理器401执行的指令,所述指令被所述至少一个处理器401执行,以使所述至少一个处理器401能够:
[0123]
使用控制类接收客户端的对象,获得所述客户端所需的控制类对象;其中,所述控
制类对象为预设数据表格中的对应字段;
[0124]
基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合;
[0125]
根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组;
[0126]
基于所述动态数据组获取所述各指定对象的动态属性集合;
[0127]
获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
[0128]
如图5所示,本说明书一个或多个实施例中,提供了一种非易失性存储介质的内部结构示意图。
[0129]
由图5可知,一种非易失性存储介质,存储有计算机可执行指令501,所述可执行指令501包括:
[0130]
使用控制类接收客户端的对象,获得所述客户端所需的控制类对象;其中,所述控制类对象为预设数据表格中的对应字段;
[0131]
基于预设反射机制依次获取所述控制类对象中,各指定对象的对象属性集合;
[0132]
根据所述对象属性集合中各个属性对应的属性值,确定与所述各指定对象相对应的动态数据组;
[0133]
基于所述动态数据组获取所述各指定对象的动态属性集合;
[0134]
获取所述动态属性集合中各个对象属性对应的属性名称,以根据所述属性名称导出与对应的属性,以完成所述属性的动态导出;其中,所述属性与所述预设数据表格中对应字段的信息相对应。
[0135]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0136]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0137]
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
转载请注明原文地址:https://tc.8miu.com/read-636.html