上篇文章中讲到,我的springboot代码生成器 项目介绍,项目中讲解了户自动生成entity,dao, servce,controller等6个文件,自动生成代码是如何实现的呢?它的原理又是什么,又使用用了什么技术呢?接下来我讲解一下如何生成entity
我大概讲解一下如何生成entity,我就按照java+mysql数据库举例子,首先我们要mysql中数据库表的每个属性,mysql中的每一个属性用数据库(information_schema.COLUMNS)表来存储的。
我们可以根据SQL查询把相关属性拿出来,我自己写了一个javabean去接受查询出来的参数
使用的sql:
SELECT TABLE_SCHEMA AS tableSchema, TABLE_NAME AS tableName, COLUMN_NAME AS columnName, ORDINAL_POSITION AS ordinalPosition, IS_NULLABLE AS notNullFlag, DATA_TYPE AS dataType, CHARACTER_MAXIMUM_LENGTH AS columnLength, COLUMN_KEY AS cloumnKey, COLUMN_COMMENT AS cloumnComent FROM information_schema.columns WHERE table_schema = ? AND table_name = ?
查询出来的数据已经有了,那么我们怎么样根据不同数据表创建不同bean呢?
现在还差一个代码模板,规定好模板,直接套模板生成实列
//该文件包名package ${packgePath};//该文件继承包名import ${extendBaseEntityPath};import org.apache.ibatis.type.Alias;import javax.persistence.Table;/** * ${classDescription} 描述 * @author ${author} 作者 * @datatime ${datatime} 创建时间 */@Alias(value = "${alias}") //mybaits 别名@Table(name="${table}") //数据库表名public class ${className} extends BaseEntity<${primaryKey}>{ private static final long serialVersionUID = 1L; //自动拼 属性,get,set 方法${entityData} }
上面就是我的实体bean 的代码模板,通过读取文件流的方式,然而通过字符串的替换参数的方法,把我们真实的数据替换,然而又是通过文件流的方式创建java文件。
主要的难点有几个
-
通过SQL查询出来封装成对象列表
-
代码中读取模板文件
-
如何生成bean的属性,get,set方法
-
如何替换模板属性,切换真实数据
-
通过文件流生成对应的java文件
上面5个步骤也是实现一键生成bean对象的步骤,也是最重要的环节。