Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rarexixi/code-generator
mysql code generator
https://github.com/rarexixi/code-generator
code-generator java mysql template
Last synced: about 1 month ago
JSON representation
mysql code generator
- Host: GitHub
- URL: https://github.com/rarexixi/code-generator
- Owner: rarexixi
- Created: 2017-12-01T07:55:45.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-06-20T23:45:16.000Z (over 2 years ago)
- Last Synced: 2023-02-26T13:41:20.755Z (over 1 year ago)
- Topics: code-generator, java, mysql, template
- Language: Java
- Size: 1.64 MB
- Stars: 4
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# mysql code generator
mysql代码生成器,用来生成java代码
## 使用方式
下载源码,使用maven打包,并将jar包重命名为codegen.jar,复制到对应模版目录下(codegen.bat/codegen.sh同级目录)
```
$ cd ${project-path}/mysql-code-generator-kt
$ mvn package -Dmaven.test.skip=true
$ mv target/mysql-code-generator-kt-xxx.jar ./codegen.jar
```复制项目中的```application-xxx.yml```到jar包同级目录
按需要配置```application-xxx.yml```(一般是数据库链接,和generator下的配置,配置说明见下文),```指定模版输入输出路径,注意windows路径"\"替换linux/mac下的"/"```
然后执行以下命令运行,```xxx```是上面配置文件```application-xxx.yml``` 横杠后面的xxx,文件名自定义即可
```sbtshell
$ java -jar codegen.jar --spring.profiles.active=xxx
```### 配置文件说明
语法不懂可以访问 [链接](https://www.jianshu.com/p/97222440cd08)```yaml
generator: # 参见 org.xi.quick.codegeneratorkt.configuration.properties.GeneratorProperties
database-name: database_name # 数据库名
encoding: UTF-8 # 代码字符集 (默认UTF-8)
table-name-match-regex: '(?<=${prefix}).*(?=${suffix})' # 获取实际表名的正则表达式,将${prefix}替换为表名前缀,将${suffix}替换为表名后缀
paths:
template: ./template # 模版路径 (以“/”结尾,windows环境下以“\”结尾)
out: ./out/ # 输出路径(同上)
files:
ignore: path1[, path2...] # 要忽略的文件(不会生成到对应目录,模板下暂时是 "include/",该行可注释)
aggregate: path1[, path2...] # 聚合文件(用于生成索引之类页面,该行可注释,一般是索引的页面,或者所有的列表)
copy: path1[, path2...] # 仅复制的文件(不做任何修改,该行可注释,一般是公共js文件,css文件)
columns:
base:
column-name-set: column-name[, column-name2...] # 公共的列名,用来生成BaseEntity (多个列名用英文逗号隔开",",下同)
table-name: table-name # 具体表名,用来获取字段信息,必填!!!
not-required:
- column-name-set: column-name[, column-name2...]
table-name: table-name # 具体表名,可选,不写代表所有表
img-url:
- column-name-set: column-name[, column-name2...] # 图片字段名列表(多个用英文逗号隔开)图片字段列表(多个用英文逗号隔开)
table-name: table-name # 具体表名,可选,不写代表所有表
video-url:
- column-name-set: column-name[, column-name2...] # 视频url字段名列表(多个用英文逗号隔开)
table-name: table-name # 具体表名,可选,不写代表所有表
doc-url:
- column-name-set: column-name[, column-name2...] # 文档url字段名列表(多个用英文逗号隔开)
table-name: table-name # 具体表名,可选,不写代表所有表
page-url:
- column-name-set: column-name[, column-name2...] # 页面url字段名列表(多个用英文逗号隔开)
table-name: table-name # 具体表名,可选,不写代表所有表
other-url:
- column-name-set: column-name[, column-name2...] # 其他url字段名列表(多个用英文逗号隔开)
table-name: table-name # 具体表名,可选,不写代表所有表
content:
- column-name-set: column-name[, column-name2...] # 内容字段名列表(多个用英文逗号隔开,用于生成前端textarea,并且忽略查询)
table-name: table-name # 具体表名,可选,不写代表所有表
select:
- column-name-set: status # 字段名列表(多个用英文逗号隔开)
table-name: multi_pk # 具体表名,可选,不写代表所有表
options: # 下拉列表(数组,用来生成 text)
- value: value1
text: text1
- value: value2
text: text2
fk-select:
- column-name-set: column-name[, column-name2...]
table-name: table-name # 具体表名,可选,不写代表所有表
fk: # 下拉列表(数组,用来生成 ${text-column-name})
foreign-table-name: foreign-table-name # 外键具体表名
value-column-name: value-column-name
text-column-name: text-column-name
valid-status:
- column-name-set: column-name[, column-name2...]
table-name: table-name # 具体表名,可选,不写代表所有表
status:
valid: 0 # 有效值
invalid: 1 # 无效值
common-properties: # 公共自定义属性(键值对,用于生成文件路径的替换,以及模板文件相应字段的替换)
key1: value1
key2: value2
...
data-type-map: # 数据映射关系(键值对,用于确定java字段类型)
dataType1: javaType1
dataType2: javaType2
...
```示例配置对应的sql为/sql/create_tables.sql
## 模版说明
模版引擎采用freemarker,所有模板在项目templates目录下,可以自行复制移动,也可以自己创建新的模板,
模版具体语法参见
[官方文档(指令)](http://freemarker.foofun.cn/ref_directives.html)
[官方文档(函数)](http://freemarker.foofun.cn/ref_builtins.html)路径中带```${className}|${tableName}|${targetTableName}```的代表会生成表对应的相关文件
除了```application-xxx.yml```配置中的三种文件以及表对应的文件,其他的都是基本文件
实际生成路径会根据配置进行替换
公共属性在commonProperties,其中other map object包括
```
"dbUrl": 数据库连接串,
"dbUsername": 数据库连接用户名,
"dbPassword": 数据库连接密码,
commonProperties配置的map
```对于表,页面model为
```
{
table: org.xi.quick.codegeneratorkt.model.TableModel,
other map object
}
```对于基本文件,页面model为
```
{
baseColumns: List 基本的公共列(如is_deleted, create_time等)
other map object
}
```对于聚合文件,页面model为
```
{
tableModels: List,
other map object
}
```### TableModel
org.xi.quick.codegeneratorkt.model.TableModel|FieldName |FieldRemark |type |example
|-------------------------------------|---------------------------|----------------------|--------------------
|databaseName |数据库名 |String |user
|tableName |表名 |String |user_type_rela
|targetTableName |目标表名 |String |user_type_rela
|className |表对应的类名 |String |UserTypeRela
|comment |表说明 |String |用户类型关系表
|columns |表列 |List\ |
|hasPk |是否有主键 |Boolean |
|pks |主键列表 |List\ |
|hasUniPk |主键唯一 |Boolean |
|uniPk |唯一主键 |ColumnModel |
|hasAutoIncUniPk |唯一主键是否自增 |Boolean |
|indexes |索引列 |List\ |
|searchColumns |可以被搜索的列 |List\ |
|requiredColumns |修改时需要的列 |List\ |
|columnsExceptBase |除了公共列以外的列 |List\ |
|selectColumns |选择列 |List\ |
|fkSelectColumns |外键选择列 |List\ |
|validStatusColumn |有效性字段 |ColumnModel |### ColumnModel
org.xi.quick.codegeneratorkt.model.ColumnModel|FieldName |FieldRemark |type |example
|-----------------------------|--------------------------|----------------------|-----------------
|databaseName |数据库名 |String |user
|tableName |表名 |String |user_type_rela
|columnName |列名 |String |user_id
|columnPosition |列位置 |Long |1
|columnDefault |默认值 |String |0
|nullable |是否为空 |Boolean |NO
|dataType |数据类型 |String |int
|charLength |字符长度 |Long |32
|byteLength |字节长度 |Long |96
|columnType |列类型 |String |int(11)
|columnKey | |String |PRI
|extra | |String |auto_increment
|columnComment |列说明 |String |用户ID
|index |是否是索引 |Boolean |
|targetName |对应的字段名 |String |UserId
|targetDataType |对应的字段类型 |String |Integer
|autoIncrement |是否自增长 |Boolean |
|pk |是否是主键 |Boolean |
|select |是否是选择项 |Boolean |
|selectOptions |选择项列表 |SelectOption[] |
|fkSelect |是否是逻辑外键选择项 |Boolean |
|fkSelectColumn |逻辑外键列 |FkSelectColumn |
|validStatus |是否是有效性字段 |Boolean |
|validStatusOption |有效性字段选择项 |ValidStatus |
|notRequired |是否不必须的 |Boolean |
|imgUrl |是否是图片url |Boolean |
|videoUrl |是否是视频url |Boolean |
|docUrl |是否文档url |Boolean |
|pageUrl |是否页面url |Boolean |
|otherUrl |是否是其他url |Boolean |
|url |是否是url |Boolean |
|content |是否是内容字段 |Boolean |
|ignoreSearch |是否忽略查询 |Boolean |#### SelectOption
org.xi.quick.codegeneratorkt.model.SelectOption|FieldName |FieldRemark |type |example
|-----------------------------|--------------------------|----------------------|-----------------
|value |值 |String |1,2
|text |展示的值 |String |状态1,状态2#### FkSelectColumn
org.xi.quick.codegeneratorkt.model.FkSelectColumn|FieldName |FieldRemark |type |example
|-----------------------------|--------------------------|----------------------|-----------------
|foreignTableName |外键表名 |String |db_user
|valueName |值的列名 |String |Id
|textName |展示的列名 |String |Name
|foreignTargetTableName |外键目标表名 |String |user
|foreignClassName |外键类名 |String |User#### ValidStatus
org.xi.quick.codegeneratorkt.model.ValidStatus|FieldName |FieldRemark |type |example
|-----------------------------|--------------------------|----------------------|-----------------
|valid |数据库名 |Integer |0 (未删除)
|invalid |数据库名 |Integer |1 (已删除)