gpt4 book ai didi

Java - 将实体转换为 wsimport 对象

转载 作者:行者123 更新时间:2023-11-30 06:03:40 24 4
gpt4 key购买 nike

在 SOAP 服务器上,我尝试将 Entities 类转换为 wsimport 生成的对象。这些对象具有相同的 getter 和 setter,但我现在不知道如何将模型的 getter 注入(inject)到 wsimport 对象 setter

例如,我需要转换此模型:

package org.library.webservice.model;

public class User {

private int id;
private String firstname;
private String lastname;
private String email;
private String password;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getFirstname() {
return firstname;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public String getLastname() {
return lastname;
}

public void setLastname(String lastname) {
this.lastname = lastname;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getPassword() {
return password;
}

}

到这个对象:

package org.library.webservice.service.generated.user;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "user", propOrder = {
"email",
"firstname",
"id",
"lastname",
"password"
})
public class User {


protected int id;
protected String firstname;
protected String lastname;
protected String email;
protected String password;

/**
* Obtient la valeur de la propriete email.
*
* @return possible object is
* {@link String }
*/
public String getEmail() {
return email;
}

/**
* Definit la valeur de la propriete email.
*
* @param value allowed object is
* {@link String }
*/
public void setEmail(String value) {
this.email = value;
}

/**
* Obtient la valeur de la propriete firstname.
*
* @return possible object is
* {@link String }
*/
public String getFirstname() {
return firstname;
}

/**
* Definit la valeur de la propriete firstname.
*
* @param value allowed object is
* {@link String }
*/
public void setFirstname(String value) {
this.firstname = value;
}

/**
* Obtient la valeur de la propriete id.
*/
public int getId() {
return id;
}

/**
* Definit la valeur de la propriete id.
*/
public void setId(int value) {
this.id = value;
}

/**
* Obtient la valeur de la propriete lastname.
*
* @return possible object is
* {@link String }
*/
public String getLastname() {
return lastname;
}

/**
* Definit la valeur de la propriete lastname.
*
* @param value allowed object is
* {@link String }
*/
public void setLastname(String value) {
this.lastname = value;
}

/**
* Obtient la valeur de la propriete password.
*
* @return possible object is
* {@link String }
*/
public String getPassword() {
return password;
}

/**
* Definit la valeur de la propriete password.
*
* @param value allowed object is
* {@link String }
*/
public void setPassword(String value) {
this.password = value;
}


}

我认为通用性和反身性是可能的,但我不知道该怎么做。

最佳答案

您需要的是使用 Java Bean-Bean 映射器,例如 Dozer 或 MapStruct。我使用过 MapStruct,它的设置和使用非常简单。

使用MapStruct,必须创建此接口(interface):

@Mapper
public interface UserMapper {

UserMapper INSTANCE = Mappers.getMapper( UserMapper.class );

org.library.webservice.service.generated.user.User toDto(org.library.webservice.model.User user);

org.library.webservice.model.User toEntity(org.library.webservice.service.generated.user.User user);
}

这就是让它工作所需的一切(好吧,你必须使用maven并将mapstruct的注释处理器添加到插件中,但不编写用于转换的java代码是可以接受的),因为字段名称是相同的在这两个 bean 类中。

MapStruct 将生成正确的实现,您可以检查生成的源代码,它在目标文件夹中的行为是否符合您的预期,如果不是,您可以通过特定注释或使用装饰器类来更改工作方式,请检查文档为了它。

关于Java - 将实体转换为 wsimport 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51787970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com