@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;@Co
·
创建实体类
@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)