概览
MyBatis简介
ORM模型
Hibernate
JPA
MyBatis
什么时候用MyBatis
Mybatis-Plus代码生成器
视频讲解:https://space.bilibili.com/483260422
生鱼忧患、死鱼安乐
Generator源码地址
Github:https://github.com/baomidou/generator
Gitee:https://gitee.com/baomidou/generator
Maven仓库坐标:https://search.maven.org/search?q=mybatis-plus-generator
官方文档:https://baomidou.com/guide/generator-new.html
�
构建者模式(Builder Pattern)
�示例源码
Github: https://github.com/baomidou/mybatis-plus-generator-examples
Gitee: https://gitee.com/baomidou/mybatis-plus-generator-examples\
代码
show table status where 1=1;
show full fields from user;
�
常用架构设计
ExpertWrapperImpl类如何设计实现dto、toEntity自动转换
package com.innovation.scene.service.wrapper;import java.util.List;/*** 实体和DTO之间的统一的映射转换接口** @author zhongying* @since 2020/07/06*/public interface EntityWrapper<D, E> {/*** dto* @param dto* @return*/E toEntity(D dto);/*** entity* @param entity* @return*/D toDto(E entity);/*** dtoList* @param dtoList* @return*/List<E> toEntity(List<D> dtoList);/*** entityList* @param entityList* @return*/List<D> toDto(List<E> entityList);}
专家模块
package com.innovation.scene.service.wrapper;import com.innovation.scene.domain.Expert;import com.innovation.scene.domain.Scene;import com.innovation.scene.service.dto.ExpertDTO;import com.innovation.scene.service.dto.SceneDTO;/*** 实体{@link Scene}和它的DTO{@link SceneDTO}之间的映射转换* 编译时会自动生成实现类,可以不用@Mapper,自定义实现接口** @author jiadp* @since 2022/04/20*/public interface ExpertWrapper extends EntityWrapper<ExpertDTO, Expert> {/*** id** @param id* @return*/default Expert fromId(Long id) {if (id == null) {return null;}Expert expert = new Expert();expert.setId(id);return expert;}}
专家模块接口实现
package com.innovation.scene.service.wrapper;import com.innovation.scene.domain.Expert;import com.innovation.scene.service.dto.ExpertDTO;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Component;import java.util.ArrayList;import java.util.List;/*** @author jiadp* @since 2022/04/20*/@RequiredArgsConstructor@Componentpublic class ExpertWrapperImpl implements ExpertWrapper {@Overridepublic Expert toEntity(ExpertDTO dto) {if (dto == null) {return null;}Expert expert = new Expert();expert.setId(dto.getId());expert.setUserId(dto.getUserId());expert.setInContributionDegree(dto.getInContributionDegree());expert.setInTime(dto.getInTime());expert.setBio(dto.getBio());expert.setStatus(dto.getStatus());expert.setApprovalStatus(dto.getApprovalStatus());expert.setApproveUserId(dto.getApproveUserId());expert.setCreateUser(dto.getCreateUser());expert.setCreateTime(dto.getCreateTime());expert.setUpdateUser(dto.getUpdateUser());expert.setUpdateTime(dto.getUpdateTime());expert.setWorkUnit(dto.getWorkUnit());expert.setPost(dto.getPost());expert.setTitle(dto.getTitle());expert.setBusinessArea(dto.getBusinessArea());expert.setMainScenes(dto.getMainScenes());expert.setAwardResume(dto.getAwardResume());expert.setImage(dto.getImage());return expert;}@Overridepublic ExpertDTO toDto(Expert entity) {if (entity == null) {return null;}ExpertDTO expertDto = new ExpertDTO();expertDto.setId(entity.getId());expertDto.setUserId(entity.getUserId());expertDto.setInContributionDegree(entity.getInContributionDegree());expertDto.setInTime(entity.getInTime());expertDto.setBio(entity.getBio());expertDto.setStatus(entity.getStatus());expertDto.setApprovalStatus(entity.getApprovalStatus());expertDto.setApproveUserId(entity.getApproveUserId());expertDto.setCreateUser(entity.getCreateUser());expertDto.setCreateTime(entity.getCreateTime());expertDto.setUpdateUser(entity.getUpdateUser());expertDto.setUpdateTime(entity.getUpdateTime());expertDto.setWorkUnit(entity.getWorkUnit());expertDto.setPost(entity.getPost());expertDto.setTitle(entity.getTitle());expertDto.setBusinessArea(entity.getBusinessArea());expertDto.setMainScenes(entity.getMainScenes());expertDto.setAwardResume(entity.getAwardResume());expertDto.setImage(entity.getImage());return expertDto;}@Overridepublic List<Expert> toEntity(List<ExpertDTO> dtoList) {if (dtoList == null) {return null;}List<Expert> list = new ArrayList<Expert>(dtoList.size());for (ExpertDTO expertDto : dtoList) {list.add(toEntity(expertDto));}return list;}@Overridepublic List<ExpertDTO> toDto(List<Expert> entityList) {if (entityList == null) {return null;}List<ExpertDTO> list = new ArrayList<ExpertDTO>(entityList.size());for (Expert expert : entityList) {list.add(toDto(expert));}return list;}}
