gcoder
gcoder是一款基于数据库结构的可扩展代码生成器。以自定义template和plugin来扩展,两者的合集称为gcoder
安装
$ npm insatll -g gcoder
如本使用
$ gcoder init json #当前目录生成.gcoder.json文件,里面配置数据库,模板和插件信息
$ gcoder add <git-url> #根据gcoder git路径添加gcoder(包含template和plugin)
$ gcoder gen #根据模板在当前目录的.gcoder下产生文件
命令介绍
gcoder init json
当前目录生成.gcoder.json文件
{
"gcoder": "使用哪个gcoder",
"db": {
"host": "数据库",
"port": "端口",
"database": "数据库名称",
"username": "用户名",
"password": "密码",
"dialect": "当前只支持mysql"
},
"splitChat": "表名称和字段切分字符,默认_",
"plugins": [插件列表]
}
gcoder add <git url>
根据git地址添加gcoder
gcoder list
列出当前可用的gcoder
gcoder gen
根据gcoder生成代码
可选参数 | 是否必须 | 说明 |
---|---|---|
-t | 否 | 指定表,只根据这些表产生文件,多表逗号隔开,比如:gcoder gen -t table1,table2 |
如何创建gcoder
1.创建gcoder目录
gcoder-java|-plugins #存放plugins目录 |- mysql-java-type-map.plugin.js #插件以plugin.js后缀 |-template #存放模板目录 |- ${upperCamelName}VO.java #文件名有表达式,每个表都会产生文件 |- mybatis-config.xml #没有模板则只产生一个
2.添加 mysql-java-type-map.plugin.js
该插件用于mysql字段类型转java字段类型
'use strict';var gcoder = require; var MysqlJavaTypeMapPlugin = module.exports = gcoder.Plugin.extend; MysqlJavaTypeMapPlugin.prototype.do = }};
3.添加 ${upperCamelName}Ctrl.java
模板使用lodash template语法,表达式模板可用参数
{
table:"表信息",
config: ”.gcoder.json配置信息“
}
public class ${upperCamelName}VO{
<%table.fieldArray.forEach(function(field){%>
//${field.comment}
private ${field.javaType} ${field.lowerCamelName};<%})%>
}
如果有一个表是 user(id,name,user_name),则产生如下
public class UserVO{
private Long id;
private String name;
private String userName;
}
4.添加 mybatis-config.xml
表达式模板可用参数
{
tables:"表列表",
config: ”.gcoder.json配置信息“
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<%tables.forEach(function(table){%>
<typeAlias alias="${table.lowerCamelName}" type="com.xxx.${table.upperCamelName}VO"/><%})%>
</typeAliases>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="userVO" type="com.xxx.UserVO"/>
</typeAliases>
</configuration>
5.修改.gcoder.json
{
"gcoder": "gcoder-java",
"db": {
"host": "数据库",
"port": "端口",
"database": "数据库名称",
"username": "用户名",
"password": "密码",
"dialect": "当前只支持mysql"
},
"plugins": ["mysql-java-type-map"]
}
可用plugin
rename
对数据库表名称和字段名称重命名为小驼峰,大驼峰,【-】分割风格和大写风格,比如表名称user_activity,
表名称 | lowerCamelName | upperCamelName | hyphenTableName | upperTableName |
---|---|---|---|---|
user_activity | userActivity | UserActivity | user-activity | USER-ACTIVITY |
数据库模型字段
table
字段 | 解释 |
---|---|
tableName | 表格名称 |
fieldArray | 字段列表 |
field
字段 | 解释 |
---|---|
fieldName | 字段名称 |
fieldType | 字段类型 |
default | 默认值 |
isPrimaryKey | 是否主键 |
canNull | 是否可空 |
comment | 字段配置 |