Java代码生成器讲解,教你如何生成Bean实体

280 阅读1分钟
原文链接: mp.weixin.qq.com

上篇文章中讲到,我的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文件。

主要的难点有几个

  1. 通过SQL查询出来封装成对象列表

  2. 代码中读取模板文件

  3. 如何生成bean的属性,get,set方法

  4. 如何替换模板属性,切换真实数据

  5. 通过文件流生成对应的java文件

上面5个步骤也是实现一键生成bean对象的步骤,也是最重要的环节。