ModelMapper 计算
ModelMapper Calculations
我正在尝试使用 ModelMapper
在映射过程中计算属性。这可能吗,因为它没有像我预期的那样工作。
PropertyMap<com.fmg.myfluent.domain.Quote, ClientQuote> personMap = new
PropertyMap<com.fmg.myfluent.domain.Quote, ClientQuote>() {
protected void configure() {
map().setTotalLoan(source.getTotalPayable());
// monthlyRate NOT Working!
map().setMonthlyRate((source.getAnnualRate()/12));
}
};
我希望月率是年率/12。但是,没有计算就将月率设置为年率。
预计:
Annual Rate = 12, Monthly Rate: 1
实际:
Annual Rate = 12, Monthly Rate: 12
您需要添加一个手动转换器来转换 ModelMapper
中的值
Converter<Integer, Integer> annualToMonthlyConverter = ctx -> ctx.getSource() == 0 ? 0 : ctx.getSource() / 12;
现在使用此转换器将您的源年度字段转换为您的目标月度字段
PropertyMap<Source, Target> personMap = new
PropertyMap<Source, Target>() {
protected void configure() {
map().setAnnual(source.getAnnual());
using(annualToMonthlyConverter).map(source.getAnnual(), destination.getMonthly());
}
};
注:
只是一个想法,根据您的设计,您也可以只映射源的年度字段,然后从目标 class 的 monthly
映射 return annual/12
' s getter
public int getMonthly() {
return annual / 12;
}
我正在尝试使用 ModelMapper
在映射过程中计算属性。这可能吗,因为它没有像我预期的那样工作。
PropertyMap<com.fmg.myfluent.domain.Quote, ClientQuote> personMap = new
PropertyMap<com.fmg.myfluent.domain.Quote, ClientQuote>() {
protected void configure() {
map().setTotalLoan(source.getTotalPayable());
// monthlyRate NOT Working!
map().setMonthlyRate((source.getAnnualRate()/12));
}
};
我希望月率是年率/12。但是,没有计算就将月率设置为年率。
预计:
Annual Rate = 12, Monthly Rate: 1
实际:
Annual Rate = 12, Monthly Rate: 12
您需要添加一个手动转换器来转换 ModelMapper
Converter<Integer, Integer> annualToMonthlyConverter = ctx -> ctx.getSource() == 0 ? 0 : ctx.getSource() / 12;
现在使用此转换器将您的源年度字段转换为您的目标月度字段
PropertyMap<Source, Target> personMap = new
PropertyMap<Source, Target>() {
protected void configure() {
map().setAnnual(source.getAnnual());
using(annualToMonthlyConverter).map(source.getAnnual(), destination.getMonthly());
}
};
注:
只是一个想法,根据您的设计,您也可以只映射源的年度字段,然后从目标 class 的 monthly
映射 return annual/12
' s getter
public int getMonthly() {
return annual / 12;
}