一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种参数封装方法、装置、设备及存储介质与流程

2021-10-23 01:35:00 来源:中国专利 TAG:封装 装置 参数 实施 计算机


1.本发明实施例涉及计算机技术领域,尤其涉及一种参数封装方法、装置、设备及存储介质。


背景技术:

2.android分包方案中的参数封装环节通常是程序开发人员基于集成开发环境(integrated development environment,ide)编写相应的分包代码实现的,且在分包过程中需要修改大量代码以实现不同渠道的分包,但是,这一手动实现的参数封装过程较为容易出错且操作流程效率低下。


技术实现要素:

3.本发明实施例提供了一种参数封装方法、装置、设备及存储介质,以实现android分包方案中参数的自动化封装的效果。
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.本发明实施例的技术方案,在监测到封装参数的触发事件时,通过获取与触发事件对应的入参参数,并将入参参数传递至预先构建的参数封装函数中,由此,可以根据参数封装函数的输出结果,得到已封装参数。上述技术方案解决了参数的手动封装过程带来的较为容易出错且操作流程效率低下问题,实现了android分包方案中参数的自动化封装,在有效地保证了参数的准确性的同时,能够极大地提高了参数的封装效率。
附图说明
43.图1是本发明实施例一中的一种参数封装方法的流程图;
44.图2是本发明实施例二中的一种参数封装方法的流程图;
45.图3是本发明实施例三中的一种参数封装方法的流程图;
46.图4是本发明实施例四中的一种参数封装装置的结构框图;
47.图5是本发明实施例五中的一种设备的结构示意图。
具体实施方式
48.下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
49.实施例一
50.图1是本发明实施例一中提供的一种参数封装方法的流程图。本实施例可适用于android分包方案中参数的自动封装的情况,尤其适用于基于预先构建的参数封装函数,对android分包方案中的参数进行自动封装的情况。该方法可以由本发明实施例提供的参数封装装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在各种用户终端或服务器上。
51.参见图1,本发明实施例的方法具体包括如下步骤:
52.s110、在监测到封装参数的触发事件时,获取与触发事件对应的入参参数,其中,入参参数包括应用标识参数和待新增的渠道标识参数。
53.其中,在程序运行过程中,封装参数的触发事件可以是参数封装函数的调用事件,可以是入参参数的获取事件,还可以是入参参数的输入事件,等等,在此未做具体限定。在监测到封装参数的触发事件时,可以获取与该触发事件对应的入参参数,该入参参数可以包括应用标识参数和待新增的渠道标识参数,该应用标识参数可以唯一的标识某个应用的标识信息(identity,id),该渠道标识参数可以标识待新增的渠道的标识信息。需要说明的是,渠道标识参数设置的意义在于,同一应用在各渠道中的分包可能存在差异性,比如,同一应用在a应用市场中的分包和在b应用市场中的分包很可能是不同的分包,而a应用市场和b应用市场就是两个渠道。
54.s120、将入参参数传递至预先构建的参数封装函数中,以使参数封装函数根据入参参数从预先构建的数据库中查询出目标数据,根据预先构建的字段映射关系,将目标数据中的各字段数据分别填充到预先构建的实体类的相应字段中,并输出实体类中的各字段数据。
55.其中,入参参数可以作为参数封装函数的入参参数,以使参数封装函数根据入参
参数实现参数封装,比如,参数封装函数可以从预先构建的数据库中查询出与入参参数对应的目标数据,并输出该目标数据。示例性的,数据库中的每条数据可以包括多个字段,根据数据库中各条数据的字段构成可预先构建出与数据库对应的实体类,由此实现了数据库中的各字段数据和实体类中的各字段数据间的一一映射关系,该映射关系可以存储在预先构建的字段映射关系中。由此,目标数据的输出过程可以是,根据字段映射关系将目标数据中的各字段数据填充到实体类的相应字段中,该实体类中的各字段数据即可作为参数封装函数的输出结果。
56.需要说明的是,首先,针对不同类型的入参参数,参数封装函数可以通过不同的实现逻辑实现参数封装,在此未做具体限定。其次,数据库可以包括应用数据库和渠道数据库,由此,根据应用标识参数可以从应用数据库中查询出目标应用数据,且根据渠道标识信息可以从渠道数据库中查询出目标渠道数据,并将该目标应用数据和该目标渠道数据共同作为目标数据。当然,各应用数据和各渠道数据也可以均存储于一个数据库中,在此未做具体限定。
57.示例性的,以应用标识参数是integer类型的入参参数appid,渠道标识参数是list<string>类型的入参参数addchannelidlist为例,参数封装函数可以如下所示:resultparam fetchparams(integer appid,list<string>addchannelidlist),其中,fetchparams是参数封装函数的函数名称,integer appid是类型为integer的第一个入参参数appid,list<string>addchannelidlist)是类型为list<string>的第二个入参参数addchannelidlist,该参数封装函数的返回参数是一个自定义类型的resultparam结果参数。
58.s130、根据参数封装函数的输出结果,得到已封装参数,其中,已封装参数包括已封装的应用参数信息和渠道参数信息。
59.其中,根据参数封装函数的输出结果可以得到已封装参数,比如,参数封装函数的输出结果可以是已封装参数,该已封装参数可以是将从数据库中查询到的目标数据封装到对应类型的对象中的结果参数,由此将现有方案中需要手动填充的内容全部转换为自动化的填充。示例性的,若参数封装函数的返回参数是自定义类型的resultparam结果参数,则已封装参数可以是将目标数据存储到resultparam中的结果参数。在得到已封装参数后,可以将已封装参数传递至该参数封装函数的调用方,以实现android分包的后续环节。
60.再比如,参数封装函数的输出结果可以是已填充参数,该已填充参数可以是将数据库中查询到的目标数据填充到对应类型的对象中的结果参数,然后将结果参数(即,已填充参数)封装在预先构造的参数封装对象中,这相当于为参数封装函数的输出结果再次包裹了一层,这样设置的意义在于,在无需修改参数封装函数的情况下,可以根据实际需求向参数封装对象中添加其余内容,由此提高了代码修改的便利性和灵活性。在实际应用中,以参数封装对象是baseresult对象且resultparam结果参数包括app和allchannellist为例,通过调用baseresult baseresult=new baseresult()构造一个空的baseresult对象,进而,通过调用baseresult.setapp(app)填充baseresult对象中相应的app字段数据,且通过调用baseresult.setchannellist(allchannellist)填充baseresult对象中相应的channel字段数据,最后通过return baseresult将全部的已封装参数返回至参数封装函数的调用方,由此实现了参数的自动化封装。
61.本发明实施例的技术方案,在监测到封装参数的触发事件时,通过获取与触发事件对应的入参参数,并将入参参数传递至预先构建的参数封装函数中,由此,可以根据参数封装函数的输出结果,得到已封装参数。上述技术方案解决了参数的手动封装过程带来的较为容易出错且操作流程效率低下问题,实现了android分包方案中参数的自动化封装,在有效地保证了参数的准确性的同时,能够极大地提高了参数的封装效率。
62.实施例二
63.图2是本发明实施例二中提供的一种参数封装方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,若入参参数是应用标识参数,则参数封装函数可以通过如下步骤实现参数封装:从预先构建的应用数据库中查询与应用标识参数对应的目标应用数据;根据预先构建的应用字段映射关系,将目标应用数据中的各字段数据分别填充到预先构建的应用实体类的相应字段中;输出应用实体类中的各字段数据。
64.其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
65.参见图2,本实施例的方法具体可以包括如下步骤:
66.s210、在监测到封装参数的触发事件时,获取与触发事件对应的入参参数,其中,入参参数包括应用标识参数和待新增的渠道标识参数。
67.s220、将应用标识参数传递至预先构建的参数封装函数中,以使参数封装函数从预先构建的应用数据库中查询与应用标识参数对应的目标应用数据;根据预先构建的应用字段映射关系,将目标应用数据中的各字段数据分别填充到预先构建的应用实体类的相应字段中。
68.其中,应用数据库可以是预先构建的一套多客户端兼容的数据结构,其与参数封装函数相互配合,可用于实现多客户端兼容的参数封装功能。该应用数据库中的每条应用数据可以包括应用标识信息、应用名称、包名、平台类型等字段,其可用于表示具体的客户端相关信息。进一步,根据应用数据库中各条应用数据的字段构成,可预先构建与应用数据库对应的应用实体类,由此实现了应用数据库中的各字段数据和应用实体类中的各字段数据间的一一映射关系。该映射关系可以存储在预先构建的应用字段映射关系中,根据该应用字段映射关系可将目标应用数据中的各字段数据填充到应用实体类的相应字段中,该应用实体类中的各字段数据可为参数封装函数的输出结果中的部分内容。
69.由此,根据应用标识参数可以从应用数据库中查询出对应的目标应用数据,每条目标应用数据可以包括应用标识信息、应用名称、包名、平台类型等字段,这一步骤可以是将具有与应用标识参数一致的应用标识信息的应用数据作为目标应用数据;进一步,根据应用字段映射关系,可以将目标应用数据中的各字段数据分别填充到应用实体类的相应字段中,比如,将目标应用数据中的应用标识信息的数据填充到应用实体类的应用标识信息中。
70.在此基础上,可选的,在从应用数据库中查询目标应用数据之前,可先对应用标识参数进行校验处理,若根据校验结果确定应用标识参数是合法参数,则从应用数据库中查询目标应用数据;否则可从参数封装函数中直接跳出。示例性的,以应用标识参数appid为例,若通过调用if(appid<=0)成立,这表明appid是非法参数,因为目标应用数据中的应用标识信息一定大于0,此时可通过掉用throw exception(“appid参数异常”)的方式抛出一个异常,从而结束整个函数流程;若通过调用if(appid<=0)不成立,这表明appid是合法参
数,可从应用数据库中查询对应的目标应用数据。
71.s230、根据参数封装函数输出的应用实体类中的各字段数据,得到已封装参数,其中,已封装参数包括已封装的应用参数信息和渠道参数信息。
72.本发明实施例的技术方案,参数封装函数通过从预先构建的应用数据库中查询出与应用标识参数对应的目标应用数据,这样一来,可根据应用字段映射关系,将目标应用数据中的各字段数据分别填充到应用实体类的相应字段中,由此实现了与应用标识参数对应的应用参数信息的自动化封装的效果。
73.为了更好地理解上述步骤的具体实现过程,下面结合具体示例对本实施例的参数封装方法进行示例性的说明。示例性的,以应用数据库是应用表结构为例,该应用表结构(即,app表结构)可通过如下方式预先构建:
[0074][0075][0076]
其中,主键id即为应用标识信息,通常情况下,每个客户端都具有某个唯一码,为了标示各客户端的唯一码,设置了字段“包名package_name”。与此同时,可通过字段“平台类型platform”快速区分出每个应用app对应于哪个平台类型。需要说明的是,主键id的唯一性只能保证各条数据的唯一性,但其不能保证各条数据的数据内容的唯一性,比如,某条数据的id是1且数据内容是3个5 5 5,某条数据的id是2且数据内容亦是5 5 5,这2条数据具有不同的id但具有相同的数据内容,由此就可能出现应用重复的可能性。理论上,根据package_name可以唯一确定出一个分包,但通过package_name直接搜寻的速度较慢,而id相当于索引,通过id可以快速搜寻到某条数据,进而通过package_name保证该条数据的数据内容的唯一性。
[0077]
进一步,针对参数封装函数的返回参数resultparam结果参数,其实体类的具体结构与应用表结构有关,因此,在构建resultparam实体类前,可先构建应用app的应用实体
类。为了实现应用实体类和应用表结构间的一一映射关系,该映射关系包括包名和类型,应用实体类可如下所示:data class app(val title:string=”,val packagename:string=”,val platform:int=0),其中,该应用实体类是一个类型为data class的类,类名称是app,其具有3个参数,分别是应用名称title、包名packagename和平台类型platform,这3个参数与应用表结构一一对应。类似的,还可预先构建与渠道表结构对应的渠道实体类,比如data class channle(val appid;int=0,val name:string=”,val platform:int=0),该渠道实体类的具体含义与上述应用实体类类似,在此不再赘述。
[0078]
由此,预先构建的resultparam实体类可以如下所示:data class resultparam{val app:app?=null,val channellist:list<channle>?=null},其具有2个参数,分别是app类型的参数app和list<channle>类型的参数channellist,在构建阶段可将这2个参数初始化为空null。resultparam实体类的数据结构决定了参数封装函数的返回参数的数据结构。
[0079]
在此基础上,应用字段映射关系可如下所示:
[0080][0081]
进一步,可通过如下代码实现目标应用数据的查询:
[0082][0083]
其中,上述代码定义了一个findallbyid函数,其返回类型与应用字段映射关系一致,均是baseresultmap类型的数据,由此得到的目标应用数据可封装到应用实体类中。具体的,其通过select(id,title,package_name,platform)from app where id=#{id,jdbctype=integer}语句,根据id查询出形式为(id,title,package_name,platform)的目标应用数据,并将该目标应用数据以应用字段映射关系baseresultmap为桥梁封装到应用实体类中。需要说明的是,首先,相对于select*,select(id,title,package_name,platform)的查询效率更高。其次,id是具有唯一性的主键,由此查询出来出的目标应用数据一定是一条数据,但是orm框架通过select语句查询出来的是一个数据集合,这是因为其无法得知查询结果中的数据条数,直接将查询结果封装在一个数据集合中返回,即使查询
结果中只有一条数据。为避免出现从数据集合中再次提取数据的情况,可在数据集合后通过limit1限定数量,orm框架从数据集合中提取出一条数据返回,此时的目标应用数据就是一条数据,可将该目标应用数据标记为app。
[0084]
实施例三
[0085]
图3是本发明实施例三中提供的一种参数封装方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,若入参参数是渠道标识参数,则参数封装函数可以通过如下步骤实现参数封装:从预先构建的渠道数据库中查询出各渠道数据,并从渠道标识参数中拆分出未在查询结果中存在的未存在渠道标识参数;将未存在渠道标识参数对应的渠道数据插入到渠道数据库,并根据插入结果更新渠道数据库;将渠道数据库中的各渠道数据作为目标渠道数据,根据预先构建的渠道字段映射关系,将目标渠道数据中的各字段数据分别填充到预先构建的渠道实体类的相应字段中;输出渠道实体类中的各字段数据。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
[0086]
参见图3,本实施例的方法具体可以包括如下步骤:
[0087]
s310、在监测到封装参数的触发事件时,获取与触发事件对应的入参参数,其中,入参参数包括应用标识参数和待新增的渠道标识参数。
[0088]
s320、将渠道标识参数传递至预先构建的参数封装函数中,以使参数封装函数从预先构建的渠道数据库中查询出各渠道数据,并从渠道标识参数中拆分出未在查询结果中存在的未存在渠道标识参数;将未存在渠道标识参数对应的渠道数据插入到渠道数据库,并根据插入结果更新渠道数据库;将渠道数据库中的各渠道数据作为目标渠道数据,根据预先构建的渠道字段映射关系,将目标渠道数据中的各字段数据分别填充到预先构建的渠道实体类的相应字段中;输出渠道实体类中的各字段数据。
[0089]
其中,因android分包是针对不同渠道实现分包功能,可设置一个与应用数据库存在映射关系的渠道数据库。该渠道数据库中的每条渠道数据可以包括渠道标识信息、应用标识信息、渠道名称、平台类型等字段,通过渠道数据中的应用标识信息和应用数据中的应用标识信息,实现了应用数据库和渠道数据库间的一一对应,相对于常规的外键设置方式,上述方案不会导致两个数据库间存在强依赖关系,由此不会出现数据结构间无法解耦的问题。
[0090]
在此基础上,渠道标识参数可标识待新增的渠道的标识信息,即需要添加的渠道集合信息,可不对其进行校验处理。而且,由于渠道标识参数是调用参数封装函数的调用方传入的,这就无法确定渠道标识参数对应的渠道数据是否存在于渠道数据库中,因此,可对渠道标识参数进行拆分处理,将其拆分为在渠道数据库中存在的已存在渠道标识参数,以及未在渠道数据库中存在的未存在渠道标识参数,并将那些未存在渠道标识参数对应的渠道数据插入到渠道数据库中,由此在参数填充过程中实现了渠道信息的同步功能。
[0091]
具体的,从渠道数据库中查询出全部的渠道数据,由此可从渠道标识参数中拆分出未在查询结果中存在的未存在渠道标识参数,即该未存在渠道标识参数对应的渠道数据未存在于渠道数据库中,可将这些渠道数据插入到渠道数据库,并根据插入结果更新渠道数据库;输出渠道数据库中的各渠道数据。当然,输出的渠道数据库中的各渠道数据可通过多种形式呈现,比如,可参见本发明实施例二中的目标应用数据的输出方式,将渠道数据库中的各渠道数据作为目标渠道数据,根据预先构建的渠道字段映射关系,可以将目标渠道
数据中的各字段数据分别填充到预先构建的渠道实体类的相应字段中,比如,将目标渠道数据中的渠道标识信息的数据填充到渠道实体类的渠道标识信息中,可将该渠道实体类作为参数封装函数的输出结果。
[0092]
在此基础上,可选的,从渠道标识参数中拆分出未在查询结果中存在的未存在渠道标识参数,可以包括:基于预设过滤函数从渠道标识参数中过滤出未在查询结果中存在的未存在渠道标识参数;基于预设过滤函数从渠道标识参数中过滤出未在未存在渠道标识参数中存在的已存在渠道标识参数,由此实现了未存在渠道标识参数的精确拆分,其是后续渠道数据同步的关键因素。
[0093]
s330、根据参数封装函数输出的渠道数据库中的各渠道数据,得到已封装参数,其中,已封装参数包括已封装的应用参数信息和渠道参数信息。
[0094]
本发明实施例的技术方案,参数封装函数通过从预先构建的渠道数据库中查询出各渠道数据,以便从渠道标识参数中拆分出未在查询结果中存在的未存在渠道标识参数;这样一来,可将未存在渠道标识参数对应的渠道数据插入到渠道数据库,并根据插入结果更新渠道数据库,由此实现了渠道信息的同步功能;进而,输出渠道数据库中的各渠道数据,由此实现了参数的填充与封装。
[0095]
为了更好地理解上述步骤的具体实现过程,下面结合具体示例对本实施例的参数封装方法进行示例性的说明。示例性的,以渠道数据库是渠道表结构为例,为构建出与应用表结构存在映射关系的渠道表结构,该渠道表结构可通过如下方式预先构建:
[0096][0097]
其中,通过渠道表结构中的字段“应用id app_id”可确定该条渠道数据对应的应用标识信息。与此同时,可通过字段“平台类型platform”快速区分出每个渠道对应于哪个平台类型,这可以提高平台类型的获取效率。
[0098]
进一步的,针对参数封装函数的返回参数resultparam结果参数,其实体类的具体结构与渠道表结构有关,因此,在构建resultparam实体类前,可先构建渠道的渠道实体类。而且,为了实现渠道实体类和渠道表结构间的一一映射关系,可根据渠道数据库中各条渠道数据的字段构成构建渠道实体类,具体形式可如下所示:data class channle(val appid;int=0,val name:string=”,val platform:int=0),其中,该渠道实体类是一个类型为data class的类,类名称是channle,其具有3个参数,分别是应用id appid、渠道名称name和平台类型platform,这3个参数与渠道表结构一一对应。
[0099]
由此,预先构建的resultparam实体类可以如下所示:data class resultparam{val app:app?=null,val channellist:list<channle>?=null},其具有2个参数,分别是app类型的参数app和list<channle>类型的参数channellist,在构建阶段可将这2个参数初始化为空null。resultparam实体类的数据结构决定了参数封装函数的返回参数的数据结构。
[0100]
在此基础上,可通过如下方式构建渠道字段映射关系,以便基于渠道字段映射关系将从渠道表结构中查询出的渠道数据封装到渠道实体类中:
[0101][0102]
进一步,可通过如下代码实现渠道数据库中各渠道数据的查询:
[0103][0104][0105]
其中,通过调用select函数查询channel渠道表结构中的各条渠道数据,通过恒为真的where true条件表示查询渠道数据库中的全部的渠道数据,将查询结果标记为list<channel>dbchannellist。
[0106]
进一步,可过滤出addchannelidlist(fetchparams函数的第二个入参参数)中元素包含在dbchannellist中的元素信息,从addchannelidlist中拆分出在渠道表结构中已存在的数据dbchannellist,或是说,找到addchannelidlist和dbchannellist公有的元素。具体过滤方式如下所示:
[0107]
addchannelidlist.filter(channel->{return!dbchannellist.contains(channel)})其中,通过调用addchannelidlist中的filter函数(预设过滤函数)实现addchannelidlist中每条数据的逐条过滤,每条数据称为channel,即每次轮训过程中的函数参数是channel;然后通过调用dbchannellist.contains(channel)判断dbchannellist是否包含channel,若是则返回true,否则返回false,这里通过取反操作(!)使得filter函数的返回结果是过滤出的未包含的对象信息,将返回结果标记为tmp1list,即tmp1list中的对象信息是addchannelidlist和dbchannellist中不相同的渠道数据,这一渠道数据是未存在渠道标识参数对应的渠道数据,tmp1list是addchannelidlist的子集。再进一步,通过类似方式addchannelidlist.filter(channel->{return!tme1list.contains(channel)})过滤出addchannelidlist中不包含tme1list的元素个数,将过滤出来的结果标记为tme2list,tmp2list中的对象信息是已存在渠道标识参数对应的渠道数据。
[0108]
针对未存在渠道标识参数对应的渠道数据,可对其执行自动插入操作,具体的操作方案如下所示:
[0109][0110]
其中,通过<insert>标签对渠道数据库中未存在的渠道数据执行插入处理,插入的参数类型是channel类型,然后通过调用insert into channel(title,package_name,platform)values对已插入数据进行赋值,(#{title,jdbctype=string},#{packagename,jdbctype=string},#{platform,jdbctype=integer})表示从参数channel中依次提取出对应的字段数据填充到已插入数据的相应字段中。由此,可将tmp1list中的各条渠道数据插入到渠道数据库中。
[0111]
最后,通过调用dbchannellist.addall(tmp2list)得到渠道数据库中的全部的渠道数据,并将其标记为allchannellist=dbchannellist。由此,可根据渠道字段映射关系将渠道数据中的各字段数据填充到渠道实体类的相应字段中,该渠道实体类中的各字段数据可为参数封装函数的输出结果中的部分内容。
[0112]
实施例四
[0113]
图4为本发明实施例四提供的参数封装装置的结构框图,该装置用于执行上述任意实施例所提供的参数封装方法。该装置与上述各实施例的参数封装方法属于同一个发明构思,在参数封装装置的实施例中未详尽描述的细节内容,可以参考上述参数封装方法的实施例。参见图4,该装置具体可包括:获取模块410、传递模块420和封装模块430。
[0114]
其中,获取模块410,用于在监测到封装参数的触发事件时,获取与触发事件对应的入参参数,入参参数包括应用标识参数和待新增的渠道标识参数;
[0115]
传递模块420,用于将入参参数传递至预先构建的参数封装函数中,以使参数封装函数根据入参参数从预先构建的数据库中查询出目标数据,根据预先构建的字段映射关
系,将目标数据中的各字段数据分别填充到预先构建的实体类的相应字段中,并输出实体类中的各字段数据;
[0116]
封装模块430,用于根据参数封装函数的输出结果,得到已封装参数,其中,已封装参数包括已封装的应用参数信息和渠道参数信息。
[0117]
可选的,传递模块420,具体可以包括:
[0118]
第一传递单元,用于将入参参数传递至预先构建的参数封装函数,以使参数封装函数从预先构建的应用数据库中查询与应用标识参数对应的目标应用数据;根据预先构建的应用字段映射关系,将目标应用数据中的各字段数据分别填充到预先构建的应用实体类的相应字段中;输出应用实体类中的各字段数据。
[0119]
可选的,第一传递单元,具体可以包括:
[0120]
检验子单元,用于对应用标识参数进行校验处理;
[0121]
查询子单元,用于若根据校验结果确定应用标识参数是合法参数,则从预先构建的应用数据库中查询与应用标识参数对应的目标应用数据。
[0122]
可选的,传递模块420,具体可以包括:
[0123]
第二传递单元,用于将入参参数传递至预先构建的参数封装函数,以使参数封装函数从预先构建的渠道数据库中查询出各渠道数据,并从渠道标识参数中拆分出未在查询结果中存在的未存在渠道标识参数;将未存在渠道标识参数对应的渠道数据插入到渠道数据库,并根据插入结果更新渠道数据库;将渠道数据库中的各渠道数据作为目标渠道数据,根据预先构建的渠道字段映射关系,将目标渠道数据中的各字段数据分别填充到预先构建的渠道实体类的相应字段中;输出渠道实体类中的各字段数据。
[0124]
可选的,第二传递单元,具体可以包括:
[0125]
未存在渠道标识参数过滤子单元,用于基于预设过滤函数从渠道标识参数中过滤出未在查询结果中存在的未存在渠道标识参数;
[0126]
已存在渠道标识参数过滤子单元,用于基于预设过滤函数从渠道标识参数中过滤出未在未存在渠道标识参数中存在的已存在渠道标识参数。
[0127]
可选的,应用数据库中的每条应用数据可以包括应用标识信息、应用名称、包名和平台类型,和/或,渠道数据库中的每条渠道数据可以包括渠道标识信息、应用标识信息、渠道名称和平台类型。
[0128]
可选的,封装模块430,具体可以包括:
[0129]
填充单元,用于根据参数封装函数的输出结果,得到已填充参数;
[0130]
封装单元,用于将已填充参数封装在预先构造的参数封装对象中,基于参数封装对象得到已封装参数。
[0131]
本发明实施例四提供的参数封装装置,在监测到封装参数的触发事件时,通过获取模块、传递模块和封装模块相互配合,可以获取与触发事件对应的入参参数,并将入参参数传递至预先构建的参数封装函数中,由此,可以根据参数封装函数的输出结果,得到已封装参数。上述装置解决了参数的手动封装过程带来的较为容易出错且操作流程效率低下问题,实现了android分包方案中参数的自动化封装,在有效地保证了参数的准确性的同时,能够极大地提高了参数的封装效率。
[0132]
本发明实施例所提供的参数封装装置可执行本发明任意实施例所提供的参数封
装方法,具备执行方法相应的功能模块和有益效果。
[0133]
值得注意的是,上述参数封装装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0134]
实施例五
[0135]
图5为本发明实施例五提供的一种设备的结构示意图,如图5所示,该设备包括存储器510、处理器520、输入装置530和输出装置540。设备中的处理器520的数量可以是一个或多个,图5中以一个处理器520为例;设备中的存储器510、处理器520、输入装置530和输出装置540可以通过总线或其它方式连接,图5中以通过总线550连接为例。
[0136]
存储器510作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的参数封装方法对应的程序指令/模块(例如,参数封装装置中的获取模块410、传递模块420和封装模块430)。处理器520通过运行存储在存储器510中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的参数封装方法。
[0137]
存储器510可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器510可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器510可进一步包括相对于处理器520远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0138]
输入装置530可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
[0139]
实施例六
[0140]
本发明实施例六提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种参数封装方法,该方法包括:
[0141]
在监测到封装参数的触发事件时,获取与触发事件对应的入参参数,其中,入参参数包括应用标识参数和待新增的渠道标识参数;
[0142]
将入参参数传递至预先构建的参数封装函数中;
[0143]
根据参数封装函数的输出结果,得到已封装参数,其中,已封装参数包括已封装的应用参数信息和渠道参数信息;
[0144]
其中,参数封装函数可以通过如下步骤实现参数封装:
[0145]
根据入参参数从预先构建的数据库中查询出目标数据;
[0146]
根据预先构建的字段映射关系,将目标数据中的各字段数据分别填充到预先构建的实体类的相应字段中,并输出实体类中的各字段数据。
[0147]
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的参数封装方法中的相关操作。
[0148]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更
佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0149]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜