步骤一: 最小框架 - (Spring Boot + ORM)

目标:建立一个可用的Restful 后台应用

技术点

- Spring Boot

起步依赖
自动化装配
约定大于配置

注解

启动

- ORM框架


- DTO

- 代码生成机制

步骤

1.1 创建应用,引入Mybatis

1.1自建工程.mp4 (30.16MB)


1.2 使用ZLT的基础module构建框架


新工程里面加入zlt-common, zlt-config

为了方便直接把zlt-common, zlt-config 拷贝到新的工程中去,

注意: 顶级目录中的pom文件也要覆盖,pom里面定义了version和依赖关系。这个比较复杂,没弄清楚,但是如果不覆盖,会出现部分的依赖在某版本号下面没有版本的问题

加入Code generator工程,启动服务


生成代码

修改dev config的配置和code generator工程的配置,生成代码

http://localhost:7300/generator/code?tables=pf_project

http://localhost:7300/generator/list?page=1&limit=100

zlt使用的ROM 框架是mybatis + baomidou/mybatisplus

https://mybatis.plus/guide/page.html

1.2zlt-orm.mp4 (30.18MB)

1.3 多表操作和DTO的集成

多表操作

基本是一样的,只是需要自己写实现代码。

  1. <select id="findProjectList" resultType="demo.generator.model.ProjectFull">
  2. select * from pf_project pp left join pf_project_operation_type ppot on pp.OperationType = ppot.Id
  3. </select>

引入Dozer.Mapper

注意ZLT里面版本是统一在顶层的pom里面配置

5.5.1

建立DTO机制

目标是建立DTO机制,这个在nodejs和dotnet里面都有类似的,java我不清楚

如: nodejs,typescript

  1. export class PrintingController implements CrudController<ItemTag> {
  2. constructor(public service: PrintingService) {}
  3. get base(): CrudController<ItemTag> {
  4. return this;
  5. }
  6. @Override()
  7. createOne(
  8. @ParsedRequest() req: CrudRequest,
  9. @ParsedBody() dto: CreateTagDto,
  10. ) {
  11. return this.service.createTag(dto);
  12. }
  13. }

如C#

  1. public class ProjectAppService : CrudAppService<Project, ProjectDto, Guid, PagedProjectResultRequestDto, CreatProjectDto, ProjectDto>
  2. {
  3. public ProjectAppService(IRepository<Project, Guid> repository)
  4. : base(repository)
  5. {
  6. }
  7. }

使用范型实现DTO Controller的基类,实现基本功能

  1. /**
  2. * DtoBaseController, controller 父类, 主要实现DTO
  3. *
  4. * 泛型的类型依次对应: Service, PO, primary key type, 保存DTO, Get DTO, Get List DTO
  5. * PO和各类DTO可以是同一种类型,不推荐
  6. *
  7. * 注意: 1. 多表联合查询时需要在map中写sql, 同时根据情况重写部分方法
  8. * 2. 子类需要处理dto字段时,可以修改dozer的mapping, 或者重写整个方法
  9. *
  10. */
  11. public class DtoBaseController<S extends ISuperService<PO>, KeyType extends Serializable,
  12. PO extends SuperEntity,
  13. SaveDto, QueryDto, QueryListDto> {
  14. @Resource
  15. private S service;

1.3实现DTO.mp4 (43.72MB)

1.4 关于代码生成

ZLT里面有个代码生成器,直接使用即可。实际就是字符串的匹配和替换。技术上比较成熟,没啥痛点。

但是注意:

和代码生成器配合时,还是尽量使用低代码的方式,比如泛型的方式实现基本功能,而不能用代码生成器去生成重复代码。

代码生成器最主要的工作还是生成一个代码的框架,比如说DTO对象文件,Service文件,PO文件,重复性的代码应该实现在基类里。