自定义代码自动生成器, 目前包含Java数据库Mapper, Dao, Service层模板
欢迎贡献各种模版
目前项目中包含两个模版在resources下, 如果模版不合适可以自己模仿其中的模版进行修改
mybatis2是根据 commons-mybatis 通用Mapper编写的, 依赖commons-mybatis 2.0mybatis-default这个生成的是简单的mybatis实体类、Dao接口以及XML, 不依赖其他包
配置文件
在resources下创建application-${name}.yml文件, ${name}随意, 例如: application-example.yml, 可创建多个
配置文件属性:
generator.datasource填入自己的项目数据库相关配置generator.package项目包名generator.template.mapping用于自定义生成文件的包格式以及文件名generator.template.path表示模版文件的路径目前可以选mybatis或mybatis-default
generator.template.mapping中可选的动态属性包含:
{packagePath}包文件路径 例如:com/xxx/xxx{className}类名 由表名使用驼峰命名法得来 可覆盖{lowercaseClassName}首字母小写的类名- 其他自定义的属性
一般按以下配置即可, 也可以自行扩展
generator:
datasource:
type: mysql
url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxx?characterEncoding=utf-8
username: xxxxxx
password: xxxxxx
package: com.xxx.xxx
template:
path: mybatis2
mapping: |
Model.java.vm: main/java/{packagePath}/database/model/{className}.java
Query.java.vm: main/java/{packagePath}/database/query/{className}Query.java
Dao.java.vm: main/java/{packagePath}/database/dao/{className}Dao.java
Service.java.vm: main/java/{packagePath}/database/service/{className}Service.java复制代码
使用
在test文件下创建测试类
@ActiveProfiles("example")中填入刚才配置文件名的nametableNames需要生成的表, 可以多个zipPath代码导出路径
调用generatorService.generateZip传入参数可以是表名数组String[]或者TableItem[]
生成的压缩包如果解压出错可以选择
360解压
运行测试方法
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.mybatis.GeneratorService;
import javax.annotation.Resource;
import java.io.IOException;
@ActiveProfiles("example")
@RunWith(SpringRunner.class)
@SpringBootTest
public class ExampleTest {
@Resource
private GeneratorService generatorService;
@Test
public void test(){
String zipPath = "/home/code.zip";
// String[] tableNames = new String[]{"table1","table2"};
// generatorService.generateZip(tableNames,zipPath);
TableItem[] tableItems = new TableItem[]{
new TableItem("table1"),
new TableItem("table2")
};
generatorService.generateZip(tableItems,zipPath);
}
}复制代码
各个变量域包含的字段
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/testclassName类名 来自表信息转驼峰命名法, 可覆盖lowercaseClassName首字母小写的类名
template
只能在VM模板中使用, 和dynamicPath的区别是值可以是Object类型, 可以通过TableItem.Builder.templateVariable(key, value)添加和覆盖, value的值可以是Class, 例如放入CommonUtils.class 在模板中就可以调用该类中的静态方法 参考系统变量的config和utils
- 默认无




近期评论