前言
车队管理类似的SaaS平台,从0到1,继续..
上一篇咱撸到租户入驻,已经是实际业务场景了,然后在设计下入驻的租户主要信息,已经租户的状态历史表。本篇本来是编写下关于SaaS计费规则的,但这块还是得按需求来设计,就先不要了。
那就从代码生成器,做个分享吧。
(我是后半夜Java,在掘金这分享下经验,那些靠copy的搬运作者,未经允许,不要copy文章了)
代码生成
程序猿子都知道,平白无期的copy代码是浪费时间的,一直CtrlC CtrlV 浪费头发,主要的精力应该用在业务逻辑上,架构完善上面,那么有一套代码生成的工具,就灰常的适合,或者已经就是程序猿的必备工具了。
场景
比如新增个业务表,那么表已经有了,如果咱用的是Mybatis 那么那些基础的SQL、表对应的Bean对象,CRUD的基础方法这些基本都是一样的,所以这类代码就是需要咱自动生成代码的工具来完成了。
做法
估计网上可以搜索出一片的代码生成工具,但从原理上或者思路上,去理解下,对每个程序猿都会有些成长值。
思路
表->获取字段,生成基本TableNameMapping.xml ,及对应的Bean对象,然后生成service、control那些
准备
先了解下Velocity,也就是*.vm 后缀的文件,Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。
TableNameMapping.xml.vm
mapping文件
1 | xml复制代码<?xml version="1.0" encoding="UTF-8"?> |
TableNameDao.java.vm
Dao内容
1 | java复制代码package ${package}.${moduleName}.dao; |
TableNameEntity.java.vm
Entity表对象,也有叫model的,反正一个意思,就是表对应的bean对象
1 | java复制代码package ${package}.${moduleName}.entity; |
TableNameService.java.vm
表对应的接口类
1 | java复制代码package ${package}.${moduleName}.service; |
TableNameServiceImpl.java.vm
接口实现类
1 | java复制代码package ${package}.${moduleName}.service.impl; |
TableNameController.java.vm
最后就是control层,一般的增删改查的入口:
1 | kotlin复制代码package ${package}.${moduleName}.controller; |
总结
代码生成,有很多案例,这种可以自己修改模板的开源也有一些,这种模板的做法,是相对比较好的实现方式。模板分享,下篇我们继续生成代码逻辑。
SaaS系统从0到1搭建,下篇继续….
本文转载自: 掘金