(三)autoCode类设计

由于代码生成系统需要支持多种数据库,因此在类的设计上需要仔细得思考下,把相同的部分抽取出来,不同的部分通过接口或抽象类来扩展.

先来看下不同的地方

  1. 获取数据库中所有的表
  2. 获取表中的字段信息

再来看相同的地方:

  1. 返回表名集合
  2. 返回SQL上下文集合(SQL上下文中已经封装好了表名,字段等信息)

 

针对于相同点和不同点,我分别用了两个抽象来来实现

如果所示,getShowTablesSQL()返回的是查询所有表名的SQL,getTableDetailSQL()返回具体表信息的SQL,buildColumnDefinition()是构建字段信息.这三个方法需要子类去实现.

 

getTableList()是抽象类中已经实现好的方法,用来返回表名集合

同样buildSQLContextList()也是抽象类中实现好的方法,用来构建SQL上下文,SQL上下文中已经封装好了表名,字段等信息

我们需要用到的也只有这两个方法而已

 

以后要添加其它数据库类型,只需要继承者两个类即可

下面贴上用户操作序列图

 

最后贴上系统生成代码的序列图

 

  1. 用户请求到Controller类
  2. Controller类调用Service中的generate()方法
  3. Service通过工厂类构建出对应的数据库类型SQLService,这个SQLService决定了使用哪种数据库
  4. 接着SQLService获取TableSelector
  5. TableSelector通过表名构建SQLContext上下文
  6. 遍历SQLContext上下文,通过velocity模板生成代码内容

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值