20.1. 生成pojo 和 md文件

    生成的路径位于工程的scr目录下,beetlsql自动判断是传统java项目还是maven项目,以使得生成的代码和sql放到正确的位置上。你也可以通过调用GenKit.setSrcPathRelativeToSrc 来设置代码生成路径,调用setResourcePathRelativeToSrc来设置生成的sql文件路径

    config 类用来配置生成喜好,目前支持生成pojo是否继承某个基类, 是否用BigDecimal代替Double,是否采用Date而不是Timestamp来表示日期,是否是直接输出到控制台而不是文件等 生成的代码如下:

    1. import java.math.*;
    2. import java.sql.*;
    3. public class UserRole extends com.test.User{
    4. private Integer id;
    5. /* 数据库注释 */
    6. private String userName;
    7. }

    如果你需要给beetl模板注册函数等扩展,可以在生成sqlManager.genPojoCode之前,先注册扩展函数

    1. SourceGen.gt.registerFunction("xxx",yourFunction)

    这样就可以再代码模板里使用扩展函数了

    20.2. 生成更多的代码

    可以实现MapperCodeGen的genCode接口,然后添加到 GenConfig里,这样再生成代码后,也会调用自定义的MapperCodeGen来生成更多代码。如系统内置的生成Mapper的代码

    这样,除了生成pojo代码外,还生成mapper代码,内置的mapper代码实现如下,供参考

    1. public class MapperCodeGen implements CodeGen {
    2. String pkg = null;
    3. public MapperCodeGen(){
    4. }
    5. this.pkg = pkg;
    6. public static String mapperTemplate="";
    7. static {
    8. mapperTemplate = GenConfig.getTemplate("/org/beetl/sql/ext/gen/mapper.btl");
    9. }
    10. @Override
    11. public void genCode(String entityPkg, String entityClass, TableDesc tableDesc,GenConfig config,boolean isDisplay) {
    12. if(pkg==null){
    13. pkg = entityPkg;
    14. }
    15. Template template = SourceGen.gt.getTemplate(mapperTemplate);
    16. String mapperClass = entityClass+"Dao";
    17. template.binding("className", mapperClass);
    18. template.binding("package",pkg);
    19. template.binding("entityClass", entityClass);
    20. template.binding("imports", mapperHead);
    21. String mapperCode = template.render();
    22. if(isDisplay){
    23. System.out.println();
    24. System.out.println(mapperCode);
    25. }else{
    26. try {
    27. SourceGen.saveSourceFile(GenKit.getJavaSRCPath(), pkg, mapperClass, mapperCode);
    28. } catch (IOException e) {
    29. throw new RuntimeException("mapper代码生成失败",e);
    30. }
    31. }
    32. }