spring中的@mapper(componentModel = “spring“)

spring中的@mapper(componentModel = “spring”)

  • @mapper(componentModel = “spring”)

  • @Mapper(componentModel = "spring")
    public interface TodoItemMapper {
    
        TodoItemVO toTodoItemVO(TodoItemDO todoItemDO);
    
        List<TTodoItem> toTodoItems(List<TodoItemDO> todoItemDOS);
    
        TodoItemDO toTodoItemDO(TodoItemVO todoItemVO);
    
        List<TodoItemVO> toTodoItemVOS(List<TodoItemDO> todoItemDOS);
    
    }
    
  • 其中可以发现这个类被定义成一个interfece,并且没有实现类。在其他地方自动注入TodoItemMapper时只会出现红线提示,但是编译会通过,这让我有点不解。问完mentor才知道,是@mapper(componentModel = “spring”)起了作用。

  • 该标签可以动态的完成DTO-DO之间的转换,这样程序员就可以免去写DO,VO,DTO各类之间转换关系的代码了。

  • 编译之后,会在target包中生成对应的实现类:

  • @Component
    public class TodoItemMapperImpl implements TodoItemMapper {
        public TodoItemMapperImpl() {
        }
    
        public TodoItemVO toTodoItemVO(TodoItemDO todoItemDO) {
            if (todoItemDO == null) {
                return null;
            } else {
                TodoItemVO todoItemVO = new TodoItemVO();
                todoItemVO.setId(todoItemDO.getId());
                todoItemVO.setUserId(todoItemDO.getUserId());
                todoItemVO.setContent(todoItemDO.getContent());
                todoItemVO.setStatus(todoItemDO.getStatus());
                todoItemVO.setTopicId(todoItemDO.getTopicId());
                return todoItemVO;
            }
        }
    
        public List<TTodoItem> toTodoItems(List<TodoItemDO> todoItemDOS) {
            if (todoItemDOS == null) {
                return null;
            } else {
                List<TTodoItem> list = new ArrayList(todoItemDOS.size());
                Iterator var3 = todoItemDOS.iterator();
    
                while(var3.hasNext()) {
                    TodoItemDO todoItemDO = (TodoItemDO)var3.next();
                    list.add(this.todoItemDOToTTodoItem(todoItemDO));
                }
    
                return list;
            }
        }
    
        public TodoItemDO toTodoItemDO(TodoItemVO todoItemVO) {
            if (todoItemVO == null) {
                return null;
            } else {
                TodoItemDO todoItemDO = new TodoItemDO();
                todoItemDO.setId(todoItemVO.getId());
                todoItemDO.setUserId(todoItemVO.getUserId());
                todoItemDO.setContent(todoItemVO.getContent());
                todoItemDO.setStatus(todoItemVO.getStatus());
                todoItemDO.setTopicId(todoItemVO.getTopicId());
                return todoItemDO;
            }
        }
    
        public List<TodoItemVO> toTodoItemVOS(List<TodoItemDO> todoItemDOS) {
            if (todoItemDOS == null) {
                return null;
            } else {
                List<TodoItemVO> list = new ArrayList(todoItemDOS.size());
                Iterator var3 = todoItemDOS.iterator();
    
                while(var3.hasNext()) {
                    TodoItemDO todoItemDO = (TodoItemDO)var3.next();
                    list.add(this.toTodoItemVO(todoItemDO));
                }
    
                return list;
            }
        }
    
        protected TTodoItem todoItemDOToTTodoItem(TodoItemDO todoItemDO) {
            if (todoItemDO == null) {
                return null;
            } else {
                TTodoItem tTodoItem = new TTodoItem();
                tTodoItem.setId(todoItemDO.getId());
                tTodoItem.setUserId(todoItemDO.getUserId());
                tTodoItem.setContent(todoItemDO.getContent());
                tTodoItem.setStatus(todoItemDO.getStatus());
                tTodoItem.setCreatedTime(todoItemDO.getCreatedTime());
                tTodoItem.setUpdatedTime(todoItemDO.getUpdatedTime());
                tTodoItem.setTopicId(todoItemDO.getTopicId());
                return tTodoItem;
            }
        }
    }
    
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐