上篇文章中讲到,我的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对象的步骤,也是最重要的环节。