是否可以生成自定义的“存在检查”方法名称,作为属性本身的方法而不是拥有对象?
我知道我可以使用hasProperty()方法来检查值的存在...https://map struct . org/documentation/stable/reference/html/# source-presence-check
但是对于Optional或JsonNullable(来自OpenApi nonullable ),检查方法是在属性本身上,而不是在拥有对象上...:-(
我可以简单地“使用”或扩展一个简单的自定义映射器来映射JsonNullable或Optional
@Mapper
public class JsonNullableMapper {
public <T> T fromJsonNullable(final JsonNullable<T> jsonNullable) {
return jsonNullable.orElse(null);
}
public <T> JsonNullable<T> asJsonNullable(final T nullable) {
return nullable != null ? JsonNullable.of(nullable) : JsonNullable.undefined();
}
}
我想实现的是这样的“存在检查”:
if(source.getProperty().isPresent()) {
target.set(customMapper.map(source.getProperty()));
}
有人找到解决办法了吗?
感谢和问候
不幸的是,答案是直接否定的。
这在当前版本的MapStruct(1.3.1final)中是不可能的,它不在1.4.0的候选名单上。您可以在MapStruct的git存储库上提出问题作为功能请求。
我已经设法实现了自定义龙目岛扩展,它生成了“状态检查”方法。
下面是一个示例项目。简而言之,我添加了@PresenceChecker
注释并实现了Lombok Javac注释处理程序。
可以将它与其他Lombok注释一起使用:
@Getter
@Setter
public class User {
private String name;
}
@Getter
@Setter
@PresenceChecker
public class UserUpdateDto {
private String name;
}
//MapStruct Mapper interface declaration
@Mapper
public interface UserMapper {
void updateUser(UserUpdateDto dto, @MappingTarget User user);
}
生成的代码:
public class User {
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
public class UserUpdateDto {
private boolean hasName;
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
this.hasName = true;
}
public boolean hasName() {
return this.hasName;
}
}
//MapStruct Mapper implementation
public class UserMapperImpl implements UserMapper {
@Override
public void updateUser(UserUpdateDto dto, User user) {
if ( dto == null ) {
return;
}
if ( dto.hasName() ) {
user.setName( dto.getName() );
}
}
}
问题内容: 我有带有文本框用户名的注册表。我要做的是,当用户输入用户名时,自定义指令将检查输入的用户名是否存在于数据库中。 指令.js 如果存在,我将在html表单中显示标签“用户名已存在”。 registration.html 但是现在,他们不能正常工作:-(,我在做对吗? 问题答案: yearofmoo提供 了一个很棒的教程, 介绍 有关angular1.3中的$ asyncvalidator
我一直在查看MapStruct文档,但没有成功。 我正在实现我的域类和我的DTO类之间的映射;使用MapSTRt。在我的域中,我不想对我的字段使用设置器,因为我们知道今天的设置器不好(出于许多原因,但这不是我问题的主题)。 但是当我想将转换为时,我收到了以下消息: 但是,我的类Item有一个业务方法void changeName(String newName),我想在映射器中使用它。 我的映射器的
本文向大家介绍在Mybatis中使用自定义缓存ehcache的方法,包括了在Mybatis中使用自定义缓存ehcache的方法的使用技巧和注意事项,需要的朋友参考一下 自定义缓存 - ehcache Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器 1.导包 2.在 Mapper.xml 中指定使用 ehcache 缓存实现 3.在resource
例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?
我正在用和编写一个
我正在尝试将添加到 Devise,但是当我注册一个新用户时,当我推送提交时它会中断。 我已确保运行< code>rake db:migrate并重新启动了我的服务器,但我得到了以下错误: ActiveRecord::StatementInvalid in Devise::RegistrationsController#create NoMethodError: nil:NilClass 的未定义方