本发明涉及计算机,具体涉及java对象的映射方法及装置、电子设备、存储介质。
背景技术:
1、对象间成员变量的映射,是指将一个java对象成员变量的值赋给另一个java对象成员变量的操作,应用开发时不同对象间成员变量的映射是常见的操作,尤其是前后端分离的web应用,entity层数据转换成vo层数据更是离不开映射。
2、现有技术中,先读取源对象成员变量的值,再赋值给目标对象的成员变量,每一个映射操作都是类似的代码,随着应用越来越复杂,当有大量的映射操作时,使用多个模板代码容易造成代码混乱,影响代码质量和开发效率效率。
3、因此,如何在大量的映射操作时,减少模板代码的使用量,以提高代码质量和开发效率,是目前急需解决的问题。
技术实现思路
1、有鉴于此,本发明实施例提供一种java对象的映射方法及装置、电子设备、存储介质,以实现简化代码,提高后期运维人员维护的效率的目的。
2、为实现上述目的,本发明实施例提供如下技术方案:
3、本发明实施例第一方面公开了一种java对象的映射方法,所述方法包括:
4、获取目标对象成员变量的元数据;
5、若所述目标对象的成员变量存在对应的注解,则确定为目标成员变量;所述注解包含预先按照预设规则配置的元素值;
6、解析所述注解得到所述元素值;
7、获取待与所述目标对象进行映射的源对象,并基于所述元素值对所述源对象进行校验;
8、若校验通过,则获取源对象中待映射的第一源成员变量的数据类型;
9、校验所述目标成员变量和所述第一源成员变量的数据类型是否一致;
10、若一致,则将所述第一源成员变量的值,赋值到所述目标成员变量;
11、若不一致,则对所述第一源成员变量进行类型转换,得到与所述目标成员变量数据类型一致的第二源成员变量,并将所述第二源成员变量的值,赋值到所述目标成员变量。
12、优选的,所述基于所述元素值对所述源对象进行校验,包括:
13、从所述元素值中获取所述源对象的类名;
14、若所述源对象的类名为空值,表示对所述源对象的类名没有要求,确定校验通过;
15、若所述源对象的类名不为空值,校验从所述元素值中获取所述源对象的类名和待与所述目标对象进行映射的源对象是否一致,若一致,确定校验通过。
16、优选的,所述若校验通过,则获取源对象中待映射的第一源成员变量的数据类型,包括:
17、若校验通过,则从所述元素值中获取源对象中待映射的第一源成员变量的名称;
18、基于所述第一源成员变量的名称,从所述源对象的元数据信息中查询到所述第一源成员变量的数据类型。
19、优选的,所述若不一致,则对所述第一源成员变量进行类型转换,得到与所述目标成员变量数据类型一致的第二源成员变量,并将所述第二源成员变量的值,赋值到所述目标成员变量,包括:
20、若不一致,则基于所述元素值,确定需调用的类型转换器的类型;
21、基于类型转换器接口和需调用的类型转换器的类型,实例化得到目标类型转换器;
22、利用所述目标类型转换器,对所述第一源成员变量进行类型转换,得到与所述目标成员变量数据类型一致的第二源成员变量。
23、优选的,所述若不一致,则对所述第一源成员变量进行类型转换,得到与所述目标成员变量数据类型一致的第二源成员变量,并将所述第二源成员变量的值,赋值到所述目标成员变量,包括:
24、若不一致,则基于所述元素值,确定需调用的类型转换器的类型;
25、基于需调用的类型转换器的类型,从预先构建的各个类型转换器中,确定目标类型转换器;所述目标类型转换器用于将所述第一源成员变量的数据类型,转换到所述目标成员变量的数据类型;
26、利用所述目标类型转换器,对所述第一源成员变量进行类型转换,得到与所述目标成员变量数据类型一致的第二源成员变量。
27、本发明实施例第二方面公开了一种java对象的映射装置,所述装置包括:
28、第一获取单元,用于获取目标对象的成员变量;若所述目标对象的成员变量存在对应的注解,则确定为目标成员变量;所述注解包含预先按照预设规则配置的元素值;
29、解析单元,用于解析所述注解得到所述元素值;
30、第一校验单元,用于获取待与所述目标对象进行映射的源对象,并基于所述元素值对所述源对象进行校验;
31、第二获取单元,用于若校验通过,则获取源对象中待映射的第一源成员变量的数据类型;
32、第二校验单元,用于所述目标成员变量和所述第一源成员变量的数据类型是否一致;
33、赋值单元,用于当所述目标成员变量和所述第一源成员变量的数据类型一致时,将所述第一源成员变量的值,赋值到所述目标成员变量;
34、转换单元,用于当所述目标成员变量和所述第一源成员变量的数据类型不一致时,对所述第一源成员变量进行类型转换,得到与所述目标成员变量数据类型一致的第二源成员变量,并将所述第二源成员变量的值,赋值到所述目标成员变量。
35、优选的,所述第一校验单元,具体用于:
36、从所述元素值中获取所述源对象的类名;
37、若所述源对象的类名为空值,表示对所述源对象的类名没有要求,确定校验通过;
38、若所述源对象的类名不为空值,校验从所述元素值中获取所述源对象的类名和待与所述目标对象进行映射的源对象是否一致,若一致,确定校验通过。
39、优选的,所述第二获取单元,具体用于:
40、若校验通过,则从所述元素值中获取源对象中待映射的第一源成员变量的名称;
41、基于所述第一源成员变量的名称,从所述源对象的元数据信息中查询到所述第一源成员变量的数据类型。
42、本发明实施例第三方面公开了一种存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现本发明实施例第一方面公开的任意一种所述的java对象的映射方法。
43、本发明实施例第四方面公开了一种电子设备,包括:存储器和处理器;
44、所述存储器用于存储计算机程序;
45、所述处理器用于执行所述计算机程序,具体用于实现本发明实施例第一方面公开的任意一种所述的java对象的映射方法。
46、基于上述本发明实施例提供的一种java对象的映射方法及装置、电子设备、存储介质,获取目标对象的成员变量;若所述目标对象的成员变量存在对应的注解,则确定为目标成员变量;所述注解包含预先按照预设规则配置的元素值;解析所述注解得到所述元素值;获取待与所述目标对象进行映射的源对象,并基于所述元素值对所述源对象进行校验;若校验通过,则获取源对象中待映射的第一源成员变量的数据类型;校验所述目标成员变量和所述第一源成员变量的数据类型是否一致;若一致,则将所述第一源成员变量的值,赋值到所述目标成员变量;若不一致,则对所述第一源成员变量进行类型转换,得到与所述目标成员变量数据类型一致的第二源成员变量,并将所述第二源成员变量的值,赋值到所述目标成员变量。在本方案中,通过在目标对象需要映射的成员变量上定义注解,基于注解的元素值,对源对象以及源对象的源成员变量的数据类型进行校验,校验通过,则完成映射操作,若数据类型不一致,则对源对象的源成员变量进行类型转换后再进行映射,当大量的映射操作时,通过添加注解的方式,消除模板代码,从而实现简化代码,提高代码质量和开发效率。