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;
}