(二)autoCode代码生成系统设计思路

先来看下一个普通的pojo类由哪几部分组成

  • 类名(表名)
  • 属性名(字段名)
  • 属性类型(字段类型)

因此,只要我们想办法获取到表结构的一些信息,然后把这些信息拼装成对应的java类信息即可.

就Mysql数据库来说,获取一个数据库中的表名的SQL是:SHOW TABLES

如图所示,这里我查询了autoCode自己的数据库

(二)autoCode代码生成系统设计思路_第1张图片

数据库表名获取到了,接着我们应该获取一张表里面的所有字段信息,mysql对应的SQL是:DESC 表名

如图所示,我们查询了datasource_config表的信息.其中字段名,字段类型,主键,自增都可以得到

(二)autoCode代码生成系统设计思路_第2张图片

我们只要把这些信息放在对应的java类里面就可以使用了.系统对应的是ColumnDefinition类

一个类代表一个字段的信息,因此所有字段的信息我们应该用List<ColumnDefinition>来保存

 

我们得到了表名以及字段信息,现在要做的是把这些信息放到velocity上下文中去

然后通过模板来来生成代码

private String doGenerator(SQLContext sqlContext,String template){
		VelocityContext context = new VelocityContext();
		
		context.put("context", sqlContext);
		context.put("table", sqlContext.getTableDefinition());
		context.put("pkColumn", sqlContext.getTableDefinition().getPkColumn());
		context.put("columns", sqlContext.getTableDefinition().getColumnDefinitions());
		
		return VelocityUtil.generate(context, template);
	}

这里是GeneratorService类中的一个方法,SQLContext中存放了表名,字段信息

然后安装事先约定好的velocity语法生成内容.String template是模板内容

代码生成完后直接返回到前台页面即可

你可能感兴趣的:((二)autoCode代码生成系统设计思路)