springboot代码生成器01--需求分析

简介

最近设计一些框架功能,需要附带写一些管理页面,需要针对一些java对象生成crud的功能, 主流的代码生成器太过简单, 虽然以前设计了代码生成器工具. 完成了一些功能。但是还是觉得用的时候不方便, 需要拉代码再独立启动代码生成器项目。太麻烦, 需要把代码生成器的功能做成springboot starter,发布在公共仓库,需要使用时候maven引入依赖,自动集成代码生成能力。有网就有工具,才符合懒人思维。

1.问题分析

1.1 为什么使用springboot starter方式集成?

主流的代码生成器使用方式大概有三种

实现方式优点缺点
通过maven插件方式集成集成方便可扩展性低;每次执行需要重新运行;不可预览;不支持多数据源
通过maven引入依赖 main函数运行集成方便;有一定程度定制能力执行需要重新运行;不可预览;不支持多数据源
发布成在线服务可视化服务无需重启,可预览几乎没有定制能力

使用springboot starter方式可以避免上面缺点,同时保留所有优点。同时starter模式可以独立项目使用,可以启动要给服务,作为内网生成平台. 拥有非常强的灵活性

1.2 支持多数据源很重要吗?

一个公司里面可能存在多个项目.包括新老项目,多微服务使用不同的业务库。因此研发每天工作,可能是同时维护多个项目。能够一次性导入多个数据源,在使用时候动态切换减少重启次数。

类似效果:

xxx.generator:
  configList:
    # 数据源1 不通数据源可以有个性化配置
    - connectName: demo_service
      url: jdbc:mysql://192.168.100.10:3306/demo_service?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
      username: root
      password: xxxx
      basePackage: com.jack.demo
      author: zhangsan
      databaseType: mysql
      ignorePrefix: 1
    # 数据源2
    - connectName: db_tom的库啊
      url: jdbc:mysql://192.168.4.187:3306/nacos_config?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
      username: root
      password: xxx
      basePackage: com.tom.demo
      author: Tom大神
      databaseType: mysql
      ignorePrefix: 0

1.3 支持多模板切换是不是也得支持?

是的。数据源不同,项目不同,使用的生成器模板也一般。实时切换模板,修改模板实时生成预览也很重要。不用修改模板通用生成器, 能够替代得手工劳动是有限。只有具体开发项目得使用者才知道,自动化程度最高得模板。 动态修改模板动态显示生成效果,是极致得效果。

xxx.generator:

  # 可以配置多套模板版本 classpath:templates,file:D:\templates,file:.\templates,
  templateLoaderPaths: classpath:work,classpath:templates,classpath:templates-tk,file:D:\templates,classpath:templates-mybatis-plus
  # 模板列表
  templateList:
      # 模板类型/包前缀
      - {templateName: Bean.java, prefix: bean}
      - {templateName: BeanMapper.java, prefix: mapper}
      - {templateName: BeanMapper.xml, prefix: mapper.xml}
      - {templateName: BeanController.java, prefix: controller}
      - {templateName: BeanControllerV1.java, prefix: controller}
      - {templateName: BeanControllerRest.java, prefix: controller}
      - {templateName: BeanService.java, prefix: service}
      - {templateName: BeanServiceImpl.java, prefix: service.impl}
      - {templateName: BeanTest.java, prefix: demo}
      - {templateName: Bean.html, prefix: ivew}
      - {templateName: Bean.md, prefix: markdown}
      - {templateName: BeanMapper_ibatis.xml, prefix: ibatis}
      - {templateName: BeanEntity.java, prefix: entity}
      - {templateName: BeanVo.java, prefix: vo}
      - {templateName: BeanParam.java, prefix: param}

1.4 可视化得必要性在哪里?

只有可视化才能讲上面需要得特性最大程度发挥出来.

  1. 填写变成配置勾选
    选择数据源>>自动查询该数据源下得所有数据库>>
    在这里插入图片描述
    选中指定库>>自动关联该库得所有表
    在这里插入图片描述

  2. 可在线预览生成效果 在这里插入图片描述

1.5 还应该有得高级功能?

1.5.1 单表生成代码vs多表生成代码

大部分代码生成器都是基于单表生成业务对象得(controller/service/dao/entity)但是实际业务并没有那么简单。可能是多表查询生成业务DTO对象,那么这个DTO应该也能像普通entity完成同样的生成功能

1.5.2 生成代码不一定要连数据库

代码生成器,本质在于提取数据库中指定表的元数据获取,表的字段信息字段类型备注完成与java对象类型的映射. 那么sql 建表语句已经有这些信息了。那么离线生成在无数据库连接情况下生成代码,应该难度也不大。

需求梳理

  1. 通过springboot方式讲可视化代码生成器封装成springboot starter
  2. 支持多数据配置,可动态切换
  3. 支持多模板配置,可动态切换(后期支持模板在线修改,并运用)
    1. 支持前端模板生成
    2. 支持对应对象得markdown
  4. 支持页面可视化,页面配置联动
  5. 支持sql建表语句导入,生成代码
  6. 支持多表查询生成DTO的代码

概要设计

模块设计

xxx-generator-core:代码生成器核心包
xxx-generator-web:代码生成器web在线生成模块
xxx-generator-springboot-starter: springboot封装模块
xxx-generator-sample: 调试starter及测试各功能模块

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值