1 浅谈代码生成器

1.1 概述

在项目开发过程中,关注点更多是在业务功能的开发及保证业务流程的正确性上,对于重复性的代码编写占据了程序员大量的时间和精力,而这些代码往往都是具有规律的。就如controller、service、serviceImpl、dao、

daoImpl、model、jsp的结构,用户、角色、权限等等模块都有类似的结构。针对这部分代码,就可以使用代码生成器,让计算机自动帮我们生成代码,将我们的双手解脱出来,减小了手工的重复劳动。

传统的方式程序员进行模块开发步骤如下:


  1. 创建数据库表
  2. 根据表字段设计实体类
  3. 编写增删改查dao
  4. 根据业务写service层
  5. web层代码和前台页面

通常只需要知道了一个表的结构,增删改查的前后台页面的代码格式就是固定的,剩下的就是复杂的业务。而代码生成工具的目标就是自动生成那部分固定格式的增删改查的代码

1.2 需求分析

快速学习-浅谈代码生成器_代码生成器

再我们的代码生成器中就是根据公共的模板和数据库表中的信息自动的生成代码。


  1. 对于不借助代码生成工具的开发,程序员通常都是以一份已经写好的代码为基础进行代码Copy和修改,根据不同业务数据库表完善需求,可以将这份代码称之为公共的代码模板。
  2. 生成的代码和数据库表中信息息息相关,所以除了模板之外还需要数据库表信息作为数据填充模板内容

1.3 实现思路

快速学习-浅谈代码生成器_数据库表_02

代码生成器的实现有很多种,我们以从mysql数据库表结构生成对应代码为例来说明如何实现一个代码生成器。有以下几个重点:



数据库和表解析,用于生成model及其他代码
通过数据库解析获取数据库中表的名称、表字段等属性:可以根据表名称确定实体类名称,根据字段确定实体类中属性(如:tb_user表对应的实体类就是User)



模板开发生成代码文件
模板中定义公共的基础代码和需要替换的占位符内容(如:${tableName}最终会根据数据库表替换为User),根据解析好的数据库信息进行数据替换并生成代码文件



基础框架的模板代码抽取
通过思路分析不难发现,对于代码生成工具而言只需要搞定数据库解析和模板开发。那么代码自动生成也并没有那么神秘和复杂。那接下来的课程和各位着重从这两个方面开始讲解直至完成属于自己的代码生成器。