首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelMapper计算

ModelMapper计算
EN

Stack Overflow用户
提问于 2018-07-30 11:56:19
回答 1查看 388关注 0票数 0

我试图在映射过程中使用ModelMapper来计算属性。这可能不像我预料的那样起作用。

代码语言:javascript
复制
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。然而,月薪是在没有计算的情况下设定为年率。

预期:

代码语言:javascript
复制
 Annual Rate = 12, Monthly Rate: 1

实际:

Annual Rate = 12, Monthly Rate: 12

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 13:07:40

您需要添加一个手动转换器来转换ModelMapper中的值。

代码语言:javascript
复制
Converter<Integer, Integer> annualToMonthlyConverter = ctx -> ctx.getSource() == 0 ? 0 : ctx.getSource() / 12;

现在使用此转换器将源年度字段转换为目标月字段。

代码语言:javascript
复制
PropertyMap<Source, Target> personMap = new
            PropertyMap<Source, Target>() {
                protected void configure() {
                    map().setAnnual(source.getAnnual());

                    using(annualToMonthlyConverter).map(source.getAnnual(), destination.getMonthly());
                }
            };

注:

根据您的设计,您也只能映射源的年度字段,然后从目标类的annual/12‘s getter返回annual/12

代码语言:javascript
复制
public int getMonthly() {
    return annual / 12;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51593444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档