# Code Generator
![](https://img.shields.io/github/languages/top/github-laziji/code-generator.svg?style=flat)
![](https://img.shields.io/github/stars/gitHub-laziji/code-generator.svg?style=social)
自定义代码自动生成器, 目前包含Java数据库`Mapper, Dao, Service`层模板
> 欢迎贡献各种模版
# 已有模板
目前项目中包含这些模版在`resources`下, 如果模版不合适可以自己模仿其中的模版进行修改
- `mybatis2` 是根据 [commons-mybatis](https://github.com/GitHub-Laziji/commons-mybatis) 通用`Mapper`编写的, 依赖`commons-mybatis 2.0`
- `mybatis-default` 这个生成的是简单的`mybatis`实体类、Dao接口以及XML, 不依赖其他包
- `mybatis-plus` 生成mybatis-plus使用的实体类以及Mapper文件, 依赖`mybatis-plus`
# 配置文件
在`resources`下创建`application-${name}.yml`文件, `${name}`随意, 例如: `application-example.yml`, 可创建多个
配置文件属性:
- `generator.datasource` 填入自己的项目数据库相关配置
- `generator.package` 项目包名
- `generator.template.base-path` 表示模版文件的路径目前可选模板请看 [已有模板](#已有模板)
- `generator.template.output-paths` 模板输出相对路径, 每行一个, 格式为`[模板文件名]: [模板输出相对路径,可使用{}引入动态变量]`可选动态变量包含:
- - `{packagePath}` 包文件路径, 例如: `com/xxx/xxx`
- - `{className}` 类名, 由表名转成驼峰命名法得来 可覆盖
- - `{lowercaseClassName}` 首字母小写的类名
- - 以及其他`dynamicPath`域中的自定义属性, `'\'`为转义符, 其后的字符不进行解析
一般按以下配置即可, 数据库支持`mysql`和`oracle`
```yml
generator:
datasource:
type: mysql
url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxx?characterEncoding=utf-8
username: xxxxxx
password: xxxxxx
package: com.g.example
template:
base-path: mybatis-plus
output-paths: |
Entity.java.vm: src/main/java/{packagePath}/entity/{className}.java
Mapper.java.vm: src/main/java/{packagePath}/mapper/{className}Mapper.java
Service.java.vm: src/main/java/{packagePath}/service/{className}Service.java
ServiceImpl.java.vm: src/main/java/{packagePath}/service/impl/{className}ServiceImpl.java
```
# 使用
在test文件下创建测试类
- `@ActiveProfiles("example")`中填入刚才配置文件名的`name`
- `tableNames`需要生成的表, 可以多个, `newBuilder`使用构造类 自定义类名, 以及其他参数
- `zipPath` 代码导出路径
调用`generatorService.generateZip`传入参数可以是表名数组`String[]`或者`TableItem[]`
运行测试方法
```Java
package pg.laziji.generator;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import pg.laziji.generator.model.TableItem;
import pg.laziji.generator.service.GeneratorService;
import javax.annotation.Resource;
@ActiveProfiles("example")
@RunWith(SpringRunner.class)
@SpringBootTest
public class ExampleTest {
@Resource
private GeneratorService generatorService;
@Test
public void test() {
generatorService.generateZip(new TableItem[]{
TableItem.newBuilder()
.tableName("table1")
.dynamicPathVariable("className", "TableA")
.build(),
new TableItem("table2")
}, "/home/code.zip");
}
}
```
# 各个变量域包含的字段
### system
只能在VM模板中使用, 可以通过`TemplateContext.setSystemVariable(key, value)`添加和覆盖,
相当于全局变量, 初始包含以下信息, value的值可以是`Class`, 例如放入`CommonUtils.class` 在模板中就可以调用该类中的静态方法
参考下面的`config`和`utils`
- `config` 可以在模板中通过这个获取所有配置文件信息`system.config.get("xxx")`
- `utils` 工具类, 里面包含格式化当前时间的函数, 可以扩展`system.utils.time("yyyy/MM/dd HH:mm:ss")`
- `username` 系统用户名
- `computerName` 计算机名
- `osName` 操作系统名称
- `osArch` 架构
- `osVersion` 系统版本
### dynamicPath
可以在VM模板和路径配置中使用, 只能存放`<String,String>`的键值对,
可以通过`TableItem.Builder.dynamicPathVariable(key, value)`添加和覆盖,
文件的动态路径变量
- `packagePath` 包路径 例如`com/e/test`
- `className` 类名 来自表名转驼峰命名法, 可覆盖
- `lowercaseClassName` 首字母小写的类名
### template
只能在VM模板中使用, 和`dynamicPath`的区别是值可以是`Object`类型,
可以通过`TableItem.Builder.templateVariable(key, value)`添加和覆盖,
value的值可以是`Class`, 例如放入`CommonUtils.class` 在模板中就可以调用该类中的静态方法
参考系统变量的`config`和`utils`
- 默认无
没有合适的资源?快使用搜索试试~ 我知道了~
读取数据库表结构生成自定义代码.zip
共36个文件
java:18个
vm:12个
xml:1个
需积分: 1 0 下载量 61 浏览量
2024-01-01
21:15:12
上传
评论
收藏 3.61MB ZIP 举报
温馨提示
数据结构
资源推荐
资源详情
资源评论
收起资源包目录
读取数据库表结构生成自定义代码.zip (36个子文件)
fgsefgergj
lib
ojdbc8.jar 3.85MB
pom.xml 3KB
src
test
java
pg
laziji
generator
ExampleTest.java 996B
main
resources
application-example.yml 649B
mybatis-plus
Entity.java.vm 1KB
ServiceImpl.java.vm 598B
Service.java.vm 383B
Mapper.java.vm 432B
mybatis-default
Mapper.xml.vm 3KB
Query.java.vm 2KB
Model.java.vm 779B
Dao.java.vm 686B
mybatis2
Query.java.vm 1KB
Service.java.vm 558B
Model.java.vm 1KB
Dao.java.vm 531B
java
pg
laziji
generator
constant
KeyConsts.java 206B
GeneratorApplication.java 161B
service
GeneratorService.java 77B
impl
table
PostgreSQLTableServiceImpl.java 867B
OracleTableServiceImpl.java 986B
MySQLTableServiceImpl.java 2KB
BaseTableService.java 4KB
gen
CodeGeneratorServiceImpl.java 6KB
DocGeneratorServiceImpl.java 227B
TableService.java 168B
model
Column.java 2KB
Table.java 1KB
TableItem.java 2KB
TemplateContext.java 4KB
util
SpringContextUtils.java 843B
ConfigUtils.java 510B
TemplateUtils.java 379B
LICENSE 1KB
.gitignore 378B
README.md 5KB
共 36 条
- 1
资源评论
zero2100
- 粉丝: 162
- 资源: 2464
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功