下午好!有一个对象包含类型为List的字段,是否可以通过表达式参数在注释中生成的值来设置T类型的每个(某些)字段?
例如:
目标对象:
public class CustomList<T extends CustomEntity> extends CustomEntity {
private List<T> field;
public CustomList() {
field = new ArrayList();
}
}
映射器接口:
@Mapper
public interface Mapper {
@Mapping(target = "java(field.foreach(f -> f.getId))", expression = "java(UUID.randomUUID().toString())")
CustomList<SomeObject> map (Object object);
}
如何实现这样的想法?在文档中,我只找到了具有1:1映射的示例。
编辑:
此外,我尝试使用以下方法:
public class IterableNonIntegrableUtil {
@SetElements
public CustomList<SomeObject> map(Object object) {
CustomList<SomeObject> customList= new CustomList<>();
customList.getField()
.forEach(item -> item.setUid(UUID.randomUUID().toString()));
return customList;
}}
@Qualifier
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
public @interface SetElements{}
Mapper interface:
@Mapper(uses = IterableNonIntegrableUtil.class)
public interface Mapper {
@Mapping(target = "field", souce = "object",
qualifiedBy=SetElements.class)
CustomList<SomeObject> map (Object object);}
但在这种情况下,我对限定符有一些错误。
可以通过将对象映射到同一类型:
CustomList<SomeObject> map(CustomList<SomeObject> src);
// in case you only want to set the ones that are null.
@Mapping(target = "someField1", default = "someValue")
@Mapping(target = "someField2", defaultExpression = "java(someMethod())")
// in case you always want to set the value.
@Mapping(target = "someField3", constant = "someValue")
@Mapping(target = "someField4", expression = "java(someMethod())")
SomeObject map(SomeObject src);
我自己会考虑在构造对象的时候设置默认值。
例如:
class SomeObject {
private String someField;
/**
* When called with a null or a blank value, the default value will be restored.
*/
void setSomeField(String value) {
// there is probably an utility out there which can make this a one-liner.
if (value != null && !value.isBlank()){
someField = value;
} else {
someField = "defaultValue";
}
}
}
以下各节讨论如何将表列和SQL表达式映射到各个对象属性。 映射表列 从属性名称清楚地命名列 从反射表自动化列命名方案 用前缀命名所有列 对列级别选项使用列属性 映射表列的子集 作为映射属性的SQL表达式 使用杂交种 使用列属性 在映射时从列属性合成 使用普通描述符 作为映射属性的查询时间SQL表达式 更改属性行为 简单验证器 在核心级别使用自定义数据类型 使用描述符和混合 同义词 操作员自定义 组
表达式API由一系列类组成,每个类表示SQL字符串中的特定词汇元素。它们组合成一个更大的结构,形成一个语句结构 编译的 转换为可以传递给数据库的字符串表示形式。这些类被组织成一个从最底层开始的层次结构 ClauseElement 班级。关键子类包括 ColumnElement ,它表示SQL语句中任何基于列的表达式的角色,例如在columns子句、WHERE子句和ORDER BY子句中,以及 Fr
我有以下课程: 我想要两个同一类的对象,比方说: 当我把映射到时,应该保持,因为有一个。 如何使用? 我试过这样的方法: 提前谢谢
我想使用SpEL来评估一些谓词。由于值/属性是动态的,我没有某个bean类。因此,我们有一个hashmap,其中(根据应用状态)键映射到不同的POJO/bean,例如: 我们希望通过设置变量来使用评估上下文,比如: 但这带来了一个例外: SpelEvaluationException:EL1007E:(位置0):在null上找不到属性或字段“person” 有人给我建议吗?
鉴于 和 如何在Orika中映射以下内容? 我需要定制的映射器或过滤器吗?
我和mappstruct一起工作,我有一个问题,我不知道mapstruct是否能帮上忙。问题是我有一个DATA类。 和地址 和“人” @Mapper公共接口DataToPerson { }