DatabaseBuilder以一套统一的、简单的文本结构,构建主流数据库的表与数据。
- 基于纯文本格式,能够快速编辑表结构与数据,同时可以在版本控制中保留清晰的改动记录
- 应用运行在JVM,支持主流操作系统
- 根据需要构建指定的表测试数据,可以快速模拟出完整的测试数据库环境
-
根据指定模板,生成表对应的实体类
-
生成指定数据库的表结构,支持数据库:
- DB2
- PostgreSql
- Oracle
- MS-SqlServer
- MySql
- H2
- SQLITE
- HSQL
- DERBY
- GBASE
- SYBASE
-
生成指定表的数据记录,支持数据库:
- HSQL
- MySql
-
表数据文本格式支持动态表达式,支持自定义表达式
-
反向生成 DatabaseBuilder 文本结构,支持数据库:
- HSQL
- MySql
-
支持类库方式嵌入应用使用
-
支持命令行方式使用
-
生成markdown格式的表结构(TODO)
- JDK 6+
core项目提供了标准的API,供外部调用
Maven
<dependency>
<groupId>org.team4u.dbb</groupId>
<artifactId>database-builder-core</artifactId>
<version>1.0.1</version>
</dependency>
// 初始化DatabaseBuilder
DatabaseBuilder builder = new DatabaseBuilder(dataSource())
// TODO 补充API说明文档
api-command项目提供了命令行方式调用Core项目的API
git clone
mvn clean install -Dmaven.test.skip=true
cd api-command
mvn clean package -Dmaven.test.skip=true
cd target/database-builder-command-*-bin/database-builder-command-*
config
lib
database-builder-command-*.jar
dbb.bat
dbb.sh
config/config.properties
# 表结构文件,支持相对路径(相对于应用目录),支持绝对路径
tableFilePath=config/tables.yml
# 类所在包路径
tableClassPackage=com.asiainfo.test.entity
# 类模板文件,可选,需要定制生成类时使用,留空采用默认模板
tableClassTemplatePath=
# 类生成目录
tableClassPath=~/tmp/entity
# 生成类文件扩展名
tableClassFileExtension=java
# 数据来源文件,支持相对路径(相对于应用目录),支持绝对路径
recordFilePath=config/records.yml
# 反向生成文件结构保存路径
tableDocumentPath=~/tmp/tables.yml
# 数据库配置
jdbc.url=jdbc:hsqldb:mem:db
jdbc.username=sa
jdbc.password=sa
应用默认只带了Hsqldb和MySql的jdbc依赖包,若需要支持其他数据库,请将对应的jdbc依赖包复制到lib文件夹
Window:
dbb.bat -h
Linux:
./dbb.sh -h
支持参数:
usage: dbb [-c <arg>] [-crd <arg>] [-ct <arg>] [-ctc <arg>] [-ctd <arg>] [-fd] [-h]
-c,--config <arg> 指定配置文件
-crd,--create-record-document <arg> 反向生成数据文本结构
-ct,--create-table <arg> 生成指定数据库的表结构
-ctc,--create-table-class <arg> 生成表对应的实体类
-ctd,--create-table-document <arg> 反向生成表结构文本结构
-fd,--fill-data 生成指定表的数据记录
-h,--help 帮助说明 帮助说明
tables:
- name : TEST
comment : 测试表
columns : |
NAME |TYPE |LENGTH|NULLABLE|COMMENT
NAME |VARCHAR |32 |0 |名称
AGE |INT |5 |0 |年龄
AMOUNT |FLOAT |10,2 |1 |金额
CREATED_TIME|DATETIME| |1 |创建时间
indexes:
- type : PK
columns :
- NAME
- type : INDEX
name : IDX_AGE
columns :
- AGE
- CREATED_TIME
- name : TEST2
comment : 测试表2
columns : |
NAME |TYPE |LENGTH|COMMENT
NAME |VARCHAR |32 |名称
AGE |INT |5 |年龄
AMOUNT |FLOAT |10,2 |金额
CREATED_TIME|DATETIME| |创建时间
records:
- table : TEST
loadMethod : CLEAR_AND_INSERT
data : |
NAME |AGE|AMOUNT|CREATED_TIME
Strings.uuid()|1 |1 |Dates.now()
Strings.uuid()|2 |10.2 |Dates.now("yyyy-MM-dd")
- table : TEST2
loadMethod : CLEAR_AND_INSERT
data : |
NAME|AGE|AMOUNT|CREATED_TIME
a |1 |1 |2015-10-01
b |2 |10.2 |