概览
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
@Component
public class ExpertWrapperImpl implements ExpertWrapper {
@Override
public 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;
}
@Override
public 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;
}
@Override
public 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;
}
@Override
public 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;
}
}