在用Java写项目的过程中存在很多重复性的工作, 比如数据库层的编写, XML
、Dao
、Service
大多是重复的
不止这些, 还有些前端页面也是, 这里分享一个Java编写的代码生成器mybatis-generator
虽然名字叫mybatis
但是不限应用于mybatis
中, 任何与数据库表对应的代码都可以
项目地址
https://github.com/GitHub-Laziji/mybatis-generator
欢迎贡献各种模版
使用
目前项目中包含两个模版在resources
下, 如果模版不合适可以自己模仿其中的模版进行修改
mybatis2
是根据 commons-mybatis 通用Mapper
编写的, 依赖commons-mybatis 2.0
mybatis-default
这个生成的是简单的mybatis
实体类、Dao接口以及XML, 不依赖其他包
配置文件
在resources
下创建application-${name}.yml
文件, ${name}
随意, 例如: application-example.yml
, 可创建多个
配置文件属性:
spring.datasource
填入自己的项目数据库相关配置
generator.package
项目包名
generator.template.mapping
用于自定义生成文件的包格式以及文件名
generator.template.path
表示模版文件的路径目前可以选mybatis
或 mybatis-default
generator.template.mapping
中可选的动态属性包含:
{packagePath}
包文件路径 例如: com/xxx/xxx
{className}
类名 由表名使用驼峰命名法得来
{customClassName}
自定义类名 (若未指定自定义类名, 则就是类名)
{suffix}
类名后缀 DO或VO (根据是否为视图)
一般按以下配置即可, 也可以自行扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| spring: datasource: url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxx?characterEncoding=utf-8 username: xxxxxx password: xxxxxx
generator: package: com.xxx.xxx template: path: mybatis2 mapping: | Model.java.vm: main/java/{packagePath}/database/model/{customClassName}.java Query.java.vm: main/java/{packagePath}/database/query/{customClassName}Query.java Dao.java.vm: main/java/{packagePath}/database/dao/{customClassName}Dao.java Service.java.vm: main/java/{packagePath}/database/service/{customClassName}Service.java
|
生成代码
在test文件下创建测试类
@ActiveProfiles("example")
中填入刚才配置文件名的name
tableNames
需要生成的表, 可以多个
zipPath
代码导出路径
调用generatorService.generateZip
传入参数可以是表名数组String[]
或者TableItem[]
运行测试方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| 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";
TableItem[] tableItems = new TableItem[]{ new TableItem("table1", "TableA"), new TableItem("table2", "TableB") }; generatorService.generateZip(tableItems,zipPath); } }
|