Code Generator

自定义代码自动生成器, 目前包含Java数据库Mapper, Dao, Service层模板

欢迎贡献各种模版

已有模板

目前项目中包含这些模版在resources下, 如果模版不合适可以自己模仿其中的模版进行修改

配置文件

resources下创建application-${name}.yml文件, ${name}随意, 例如: application-example.yml, 可创建多个

配置文件属性:

一般按以下配置即可, 数据库支持mysqloracle

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文件下创建测试类

调用generatorService.generateZip传入参数可以是表名数组String[]或者TableItem[]

运行测试方法

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 在模板中就可以调用该类中的静态方法 参考下面的configutils

dynamicPath

可以在VM模板和路径配置中使用, 只能存放<String,String>的键值对, 可以通过TableItem.Builder.dynamicPathVariable(key, value)添加和覆盖, 文件的动态路径变量

template

只能在VM模板中使用, 和dynamicPath的区别是值可以是Object类型, 可以通过TableItem.Builder.templateVariable(key, value)添加和覆盖, value的值可以是Class, 例如放入CommonUtils.class 在模板中就可以调用该类中的静态方法 参考系统变量的configutils