@Mapper(componentModel = “spring“)基本使用

创建实体类

@Data
@Entity
@Table(name="menu")//使用jpa
@GenericGenerator(name = "jpa-uuid", strategy = "uuid")
public class Menu {
    @Id
    @GeneratedValue(generator = "jpa-uuid")
    @Column(length = 32)
    private String id;
    @Column(length = 32)
    private String parentId;
    @Column(length = 32)
    private String name;
}

映射vo实体类

@Data
public class MenuVo {

    private String id;

    private String parentId;

    private String nameVo;

}

创建mapper接口

@Mapper(componentModel = "spring")
public interface MenuMapper {

    //字段不同时,手动设置对应的字段映射
    @Mappings(
            {
                    @Mapping(source = "name",target = "nameVo")
            }
    )
    MenuVo toDto(Menu menu);

    @Mappings(
            {
                    @Mapping(source = "nameVo",target = "name")
            }
    )
    Menu toEntity(MenuVo menuVo);
}

完成以上代码,即可编译。编译后会自动创建mapper的实现类


import org.springframework.stereotype.Component;

@Component
public class MenuMapperImpl implements MenuMapper {
    public MenuMapperImpl() {
    }

    public MenuVo toDto(Menu menu) {
        if (menu == null) {
            return null;
        } else {
            MenuVo menuVo = new MenuVo();
            menuVo.setNameVo(menu.getName());
            menuVo.setId(menu.getId());
            menuVo.setParentId(menu.getParentId());
            return menuVo;
        }
    }
}

完成以上即可进行使用完成映射,代码演示片段如下:查完数据库实体直接转为vo

    @Autowired
    private MenuDao menuDao;

    @Autowired
    private MenuMapper menuMapper;

    public MenuVo getMenuVo(String id) {
        Menu menu = menuDao.findById(id).get();//jpa自带
        return menuMapper.toDto(menu);
    }

调用接口响应结果:

 扩展规范代码如下:

public interface EntityMapper<D, E> {

	@Named("toEntity")
	E toEntity(D dto);

	@Named("toDto")
	D toDto(E entity);

	@IterableMapping(qualifiedByName = "toEntity")
	@Named("toEntitys")
	List<E> toEntitys(List<D> dtoList);

	@IterableMapping(qualifiedByName = "toDto")
	@Named("toDtos")
	List<D> toDtos(List<E> entityList);

	@Named("emptyToNullFormat")
	default String emptyToNullFormat(String value) {
		return StrUtil.emptyToNull(value);
	}
}
@Mapper(componentModel = "spring")
public interface MenuMapper extends EntityMapper<MenuVo,Menu>{//第一个泛型为Vo,第二为数据库实体

    @Mappings(
            {
                    @Mapping(source = "name",target = "nameVo")
            }
    )
    @Override
    @Named("toDto")
    MenuVo toDto(Menu menu);

    @Mappings(
            {
                    @Mapping(source = "nameVo",target = "name")
            }
    )
    @Override
    @Named("toEntity")
    Menu toEntity(MenuVo menuVo);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值