概览

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自动转换

  1. package com.innovation.scene.service.wrapper;
  2. import java.util.List;
  3. /**
  4. * 实体和DTO之间的统一的映射转换接口
  5. *
  6. * @author zhongying
  7. * @since 2020/07/06
  8. */
  9. public interface EntityWrapper<D, E> {
  10. /**
  11. * dto
  12. * @param dto
  13. * @return
  14. */
  15. E toEntity(D dto);
  16. /**
  17. * entity
  18. * @param entity
  19. * @return
  20. */
  21. D toDto(E entity);
  22. /**
  23. * dtoList
  24. * @param dtoList
  25. * @return
  26. */
  27. List<E> toEntity(List<D> dtoList);
  28. /**
  29. * entityList
  30. * @param entityList
  31. * @return
  32. */
  33. List<D> toDto(List<E> entityList);
  34. }

专家模块

  1. package com.innovation.scene.service.wrapper;
  2. import com.innovation.scene.domain.Expert;
  3. import com.innovation.scene.domain.Scene;
  4. import com.innovation.scene.service.dto.ExpertDTO;
  5. import com.innovation.scene.service.dto.SceneDTO;
  6. /**
  7. * 实体{@link Scene}和它的DTO{@link SceneDTO}之间的映射转换
  8. * 编译时会自动生成实现类,可以不用@Mapper,自定义实现接口
  9. *
  10. * @author jiadp
  11. * @since 2022/04/20
  12. */
  13. public interface ExpertWrapper extends EntityWrapper<ExpertDTO, Expert> {
  14. /**
  15. * id
  16. *
  17. * @param id
  18. * @return
  19. */
  20. default Expert fromId(Long id) {
  21. if (id == null) {
  22. return null;
  23. }
  24. Expert expert = new Expert();
  25. expert.setId(id);
  26. return expert;
  27. }
  28. }

专家模块接口实现

  1. package com.innovation.scene.service.wrapper;
  2. import com.innovation.scene.domain.Expert;
  3. import com.innovation.scene.service.dto.ExpertDTO;
  4. import lombok.RequiredArgsConstructor;
  5. import org.springframework.stereotype.Component;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. /**
  9. * @author jiadp
  10. * @since 2022/04/20
  11. */
  12. @RequiredArgsConstructor
  13. @Component
  14. public class ExpertWrapperImpl implements ExpertWrapper {
  15. @Override
  16. public Expert toEntity(ExpertDTO dto) {
  17. if (dto == null) {
  18. return null;
  19. }
  20. Expert expert = new Expert();
  21. expert.setId(dto.getId());
  22. expert.setUserId(dto.getUserId());
  23. expert.setInContributionDegree(dto.getInContributionDegree());
  24. expert.setInTime(dto.getInTime());
  25. expert.setBio(dto.getBio());
  26. expert.setStatus(dto.getStatus());
  27. expert.setApprovalStatus(dto.getApprovalStatus());
  28. expert.setApproveUserId(dto.getApproveUserId());
  29. expert.setCreateUser(dto.getCreateUser());
  30. expert.setCreateTime(dto.getCreateTime());
  31. expert.setUpdateUser(dto.getUpdateUser());
  32. expert.setUpdateTime(dto.getUpdateTime());
  33. expert.setWorkUnit(dto.getWorkUnit());
  34. expert.setPost(dto.getPost());
  35. expert.setTitle(dto.getTitle());
  36. expert.setBusinessArea(dto.getBusinessArea());
  37. expert.setMainScenes(dto.getMainScenes());
  38. expert.setAwardResume(dto.getAwardResume());
  39. expert.setImage(dto.getImage());
  40. return expert;
  41. }
  42. @Override
  43. public ExpertDTO toDto(Expert entity) {
  44. if (entity == null) {
  45. return null;
  46. }
  47. ExpertDTO expertDto = new ExpertDTO();
  48. expertDto.setId(entity.getId());
  49. expertDto.setUserId(entity.getUserId());
  50. expertDto.setInContributionDegree(entity.getInContributionDegree());
  51. expertDto.setInTime(entity.getInTime());
  52. expertDto.setBio(entity.getBio());
  53. expertDto.setStatus(entity.getStatus());
  54. expertDto.setApprovalStatus(entity.getApprovalStatus());
  55. expertDto.setApproveUserId(entity.getApproveUserId());
  56. expertDto.setCreateUser(entity.getCreateUser());
  57. expertDto.setCreateTime(entity.getCreateTime());
  58. expertDto.setUpdateUser(entity.getUpdateUser());
  59. expertDto.setUpdateTime(entity.getUpdateTime());
  60. expertDto.setWorkUnit(entity.getWorkUnit());
  61. expertDto.setPost(entity.getPost());
  62. expertDto.setTitle(entity.getTitle());
  63. expertDto.setBusinessArea(entity.getBusinessArea());
  64. expertDto.setMainScenes(entity.getMainScenes());
  65. expertDto.setAwardResume(entity.getAwardResume());
  66. expertDto.setImage(entity.getImage());
  67. return expertDto;
  68. }
  69. @Override
  70. public List<Expert> toEntity(List<ExpertDTO> dtoList) {
  71. if (dtoList == null) {
  72. return null;
  73. }
  74. List<Expert> list = new ArrayList<Expert>(dtoList.size());
  75. for (ExpertDTO expertDto : dtoList) {
  76. list.add(toEntity(expertDto));
  77. }
  78. return list;
  79. }
  80. @Override
  81. public List<ExpertDTO> toDto(List<Expert> entityList) {
  82. if (entityList == null) {
  83. return null;
  84. }
  85. List<ExpertDTO> list = new ArrayList<ExpertDTO>(entityList.size());
  86. for (Expert expert : entityList) {
  87. list.add(toDto(expert));
  88. }
  89. return list;
  90. }
  91. }