# db-generator **Repository Path**: candy_code/db-generator ## Basic Information - **Project Name**: db-generator - **Description**: 一款数据库代码生成工具,可定制生成模板,提高开发效率 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-12-03 - **Last Updated**: 2023-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # db-generator #### 介绍 一款数据库代码生成工具,可定制生成模板,提高开发效率。 #### 特点 ##### 1、基于Java+FreeMarker模板开发,上手简单 ##### 2、支持自定义模板,可以满足绝大部分场景下的代码生成 ##### 3、配置文件提供了丰富的可选项,用来方便的控制代码生成过程 ##### 4、自带运行脚本,一键生成 ##### 5、支持通过命令传参,参数频繁变化时更加灵活 #### 安装及使用 1. 下载out/artifacts目录下的db-generator.zip 2. 解压 3. 使用文本编辑器打开config.properties配置文件,修改数据库连接信息及其他生成参数 4. Windows系统运行gen.bat(Linux、Macx系统运行./gen.sh)即可运行程序 5. 进入代码成目录(默认为当前的out文件夹),将生成的代码拷贝到自己的项目中即可 #### config.properties 配置文件使用说明 ``` #说明:#表示注释。如需开启相关配置项,请删除其前面的#号 #数据库配置 db.driver=com.mysql.jdbc.Driver db.url=jdbc:mysql://101.201.198.177:3306/databasename?autoReconnect=true&useUnicode=true&characterEncoding=utf-8 db.username=username db.password=password #作者,默认计算机用户名 #class.author=candycode #输出文件的后缀名,默认.java #export.file.suffix=.java #输出文件的根目录,默认当前路径 #out.dir=c:/out #指定model文件生成的绝对路径,默认为根路径(out.dir)下的models文件夹 #out.model.dir=c:/out/models #指定dao文件生成的绝对路径,默认为根路径(out.dir)下的dao文件夹 #out.dao.dir=c:/out/dao #model文件的包名 model.package.name=com.test.mode #dao文件的包名 dao.package.name=com.test.dao #指定使用的哪一组模板,默认default #template.group=default #强制重新生成目标文件,默认false #config.force=false #排除不需要处理的表 #tables.exclude=table1,table2 #生成文件时去除数据库表名的前缀,多个之间用逗号分隔 #tables.remove.prefix=t_ ``` 自定义模板流程 1. 为自己的模板起一个名字,比如:fantasy 2. 在templates目录下新建fantasy目录 3. 在fantasy目录下新建模板文件:model.ftl(用于数据库映射实体类)、base_model.ftl(用于生成数据库映射实体类的父类)、dao.ftl(用于生成数据库操作类) 4. 启用自定模板。修改config.properties文件中的template.group配置项的值为fantasy。 5. 运行gen脚本,验证运行结果。 模板内置变量说明: ##### .now: 当前系统时间 ##### name : 数据库表名 ##### modelName : 数据库表对应的类名(默认使用驼峰式命名规则) ##### modelPackageName :数据实体类的包名(例如:com.test.demo) ##### baseModelName: 数据库实体类的父类的类名 ##### basePackageModelName: 数据库实体类的父类的包名 ##### daoName: 数据库操作类的类名 ##### author: 作者名字,默认是计算机名字,可通过config.properties文件中的class.author配置项修改 ##### columnMetas: 列信息数组 ###### isPrimaryKey: boolean,是否是主键 ###### name : 数据库字列名 ###### javaType: 数据库字段类型对应的java数据类型 ###### attrName: 数据库字段对应的java变量名(默认使用驼峰式命名规则) ###### remarks: 字段备注 FreeMarker语法简介: ``` #for循环 <#list columnMetas as column> do something ... ``` ``` #if、else <#if column.isPrimaryKey=='true'> do something ... <#else> do something else ... ``` 函数调用 ``` #将数据库列明对应的Java变量名首字母大写 ${column.attrName?cap_first} ``` 如果你想深入了解FreeMarker语法,请点击[http://freemarker.foofun.cn/toc.html](http://freemarker.foofun.cn/toc.html)