三个模板文件

mapper.btl
1package ${package}; 2import org.beetl.sql.core.annotatoin.*; 3import org.beetl.sql.core.db.KeyHolder; 4import org.beetl.sql.core.engine.PageQuery; 5import org.beetl.sql.core.mapper.BaseMapper; 6${imports} 7 8public interface ${className} extends BaseMapper<${entityClass}> { 9 // 10}
md.btl

1<% 2 3var tableAlias = alias==null?"":(alias+".");//如果没有设置alias,则默认为t 4%> 5sample 6=== 7* 注释### 8 9 select ${PS}use("cols")${PE} from ${tableName} ${alias} where ${PS}use("condition")${PE} 10 11cols 12=== 13 <% 14 print("\t"); 15 for(col in cols){ 16 var colName=tableAlias+col+(colLP.last?"":","); 17 print(colName); 18 }%> 19 20 21updateSample 22=== 23 24 <% 25 print("\t"); 26 for(col in cols){ 27 var colName=tableAlias+col; 28 var attr = @nc.getPropertyName(col); 29 print(colName+"="+PS+attr+PE); 30 if(!colLP.last){ 31 print(","); 32 } 33 }%> 34 35 36condition 37=== 38 39 1 = 1 40 <% 41 for(col in cols){ 42 var colName=tableAlias+col; 43 var attr = @nc.getPropertyName(col); 44 %> 45 ${SS}if(!isEmpty(${attr})){${SE} 46 and ${colName}=${PS+attr+PE} 47 ${SS}}${SE} 48 <%}%>
View Code
pojo.btl
因为我想用lombok 所以使用@Setter ..注解
1package ${package}; 2import lombok.*; 3${imports} 4${implSerializable?"import java.io.Serializable;"} 5 6@Table(name="${catalog}.${table}") 7@Setter 8@Getter 9@NoArgsConstructor 10public class ${className} ${!isEmpty(ext)?"extends "+ext} ${implSerializable?"implements Serializable"} { 11 12 <%for(attr in attrs){ 13 if(!isEmpty(attr.comment)){%> 14 /* 15 *${attr.comment} 16 */ 17 <% }%> 18 private ${attr.type} ${attr.name} ; 19 <%}%> 20 21}
BeetlGenCode.java
1package com.github.tungss.auth; 2 3import org.beetl.sql.core.*; 4import org.beetl.sql.core.db.*; 5import org.beetl.sql.core.kit.*; 6import org.beetl.sql.ext.gen.*; 7 8import java.io.*; 9import java.util.Set; 10 11/** 12 * 生成dao代码. 13 */ 14 15public class BeetlGenCode { 16 // ========数据库配置========= 17 private static String driver = "com.mysql.cj.jdbc.Driver"; 18 private static String url = "jdbc:mysql:///auth?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC"; 19 private static String userName = "root"; 20 private static String password = "123456"; 21 // ========模板的路径, 示例是spring boot的[src/main/resources/beetlsqlTemplate 文件夹]========= 22 private static String templatePath = "/beetlsqlTemplate"; 23 // ========md生成路径 要提前创建========= 24 private static String mdPath = "/sql"; 25 // ========生成实体类所在的包========= 26 private static String pojoPkg = "com.test.entity"; 27 // ========生成mapper类所在的包========= 28 private static String mapperPkg = "com.test.dao"; 29 30 /** 31 * 入口 32 */ 33 public static void main(String[] args) throws Exception { 34 genAll(); 35 } 36 37 public static void genAll() throws Exception { 38 //准备工作 39 ConnectionSource source = ConnectionSourceHelper.getSimple(driver, url, userName, password); 40 DBStyle mysql = new MySqlStyle(); 41 SQLLoader loader = new ClasspathLoader(mdPath); 42 UnderlinedNameConversion nc = new UnderlinedNameConversion(); 43 SQLManager sqlManager = new SQLManager(mysql, loader, source, nc, null); 44 45 GenConfig config = new GenConfig(); 46 config.setDisplay(false); 47 config.setPreferBigDecimal(true); 48 49 System.out.println("======生成代码======"); 50 Set<String> tables = sqlManager.getMetaDataManager().allTable(); 51 for (String table : tables) { 52 System.out.printf("%-20s %s\n",table , "生成完毕"); 53 //默认生成实体类的实现 54 sqlManager.genPojoCode(table, pojoPkg, config); 55 //自定义实现 56 genMd(sqlManager, config, table); 57 //自定义实现 58 genMapper(sqlManager, config, table); 59 } 60 System.out.println("=====生成完毕====="); 61 } 62 63 /** 64 * 生成md文件 65 */ 66 public static void genMd(SQLManager sqlManager, GenConfig config, String table) throws IOException { 67 String fileName = StringKit.toLowerCaseFirstOne(sqlManager.getNc().getClassName(table)); 68 if (config.getIgnorePrefix() != null && !config.getIgnorePrefix().trim().equals("")) { 69 fileName = fileName.replaceFirst(StringKit.toLowerCaseFirstOne(config.getIgnorePrefix()), ""); 70 fileName = StringKit.toLowerCaseFirstOne(fileName); 71 } 72 String target = GenKit.getJavaResourcePath() + "/" + mdPath + "/" + fileName + ".md"; 73 TableDesc desc = sqlManager.getMetaDataManager().getTable(table); 74 FileWriter writer = new FileWriter(new File(target)); 75 MDCodeGen mdCodeGen = new MDCodeGen(); 76 mdCodeGen.setMapperTemplate(config.getTemplate(templatePath + "/md.btl")); 77 mdCodeGen.genCode(sqlManager.getBeetl(), desc, sqlManager.getNc(), null, writer); 78 writer.close(); 79 } 80 81 /** 82 * 生成mapper 83 */ 84 public static void genMapper(SQLManager sqlManager, GenConfig config, String table) { 85 MapperCodeGen mapperCodeGen = new MapperCodeGen(mapperPkg); 86 mapperCodeGen.setMapperTemplate(config.getTemplate(templatePath + "/mapper.btl")); 87 mapperCodeGen.genCode(pojoPkg, sqlManager.getNc().getClassName(table), sqlManager.getMetaDataManager().getTable(table), null, false); 88 } 89}