20.1. 生成pojo 和 md文件
生成的路径位于工程的scr目录下,beetlsql自动判断是传统java项目还是maven项目,以使得生成的代码和sql放到正确的位置上。你也可以通过调用GenKit.setSrcPathRelativeToSrc 来设置代码生成路径,调用setResourcePathRelativeToSrc来设置生成的sql文件路径
config 类用来配置生成喜好,目前支持生成pojo是否继承某个基类, 是否用BigDecimal代替Double,是否采用Date而不是Timestamp来表示日期,是否是直接输出到控制台而不是文件等 生成的代码如下:
import java.math.*;
import java.sql.*;
public class UserRole extends com.test.User{
private Integer id;
/* 数据库注释 */
private String userName;
}
如果你需要给beetl模板注册函数等扩展,可以在生成sqlManager.genPojoCode之前,先注册扩展函数
SourceGen.gt.registerFunction("xxx",yourFunction)
这样就可以再代码模板里使用扩展函数了
20.2. 生成更多的代码
可以实现MapperCodeGen的genCode接口,然后添加到 GenConfig里,这样再生成代码后,也会调用自定义的MapperCodeGen来生成更多代码。如系统内置的生成Mapper的代码
这样,除了生成pojo代码外,还生成mapper代码,内置的mapper代码实现如下,供参考
public class MapperCodeGen implements CodeGen {
String pkg = null;
public MapperCodeGen(){
}
this.pkg = pkg;
public static String mapperTemplate="";
static {
mapperTemplate = GenConfig.getTemplate("/org/beetl/sql/ext/gen/mapper.btl");
}
@Override
public void genCode(String entityPkg, String entityClass, TableDesc tableDesc,GenConfig config,boolean isDisplay) {
if(pkg==null){
pkg = entityPkg;
}
Template template = SourceGen.gt.getTemplate(mapperTemplate);
String mapperClass = entityClass+"Dao";
template.binding("className", mapperClass);
template.binding("package",pkg);
template.binding("entityClass", entityClass);
template.binding("imports", mapperHead);
String mapperCode = template.render();
if(isDisplay){
System.out.println();
System.out.println(mapperCode);
}else{
try {
SourceGen.saveSourceFile(GenKit.getJavaSRCPath(), pkg, mapperClass, mapperCode);
} catch (IOException e) {
throw new RuntimeException("mapper代码生成失败",e);
}
}
}