三个模板文件

mapper.btl

package ${package};
import org.beetl.sql.core.annotatoin.*;
import org.beetl.sql.core.db.KeyHolder;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.core.mapper.BaseMapper;
${imports} public interface ${className} extends BaseMapper<${entityClass}> {
//
}

md.btl

<%

var tableAlias = alias==null?"":(alias+".");//如果没有设置alias,则默认为t
%>
sample
===
* 注释### select ${PS}use("cols")${PE} from ${tableName} ${alias} where ${PS}use("condition")${PE} cols
===
<%
print("\t");
for(col in cols){
var colName=tableAlias+col+(colLP.last?"":",");
print(colName);
}%> updateSample
=== <%
print("\t");
for(col in cols){
var colName=tableAlias+col;
var attr = @nc.getPropertyName(col);
print(colName+"="+PS+attr+PE);
if(!colLP.last){
print(",");
}
}%> condition
=== 1 = 1
<%
for(col in cols){
var colName=tableAlias+col;
var attr = @nc.getPropertyName(col);
%>
${SS}if(!isEmpty(${attr})){${SE}
and ${colName}=${PS+attr+PE}
${SS}}${SE}
<%}%>

pojo.btl

因为我想用lombok 所以使用@Setter ..注解

package ${package};
import lombok.*;
${imports}
${implSerializable?"import java.io.Serializable;"} @Table(name="${catalog}.${table}")
@Setter
@Getter
@NoArgsConstructor
public class ${className} ${!isEmpty(ext)?"extends "+ext} ${implSerializable?"implements Serializable"} { <%for(attr in attrs){
if(!isEmpty(attr.comment)){%>
/*
*${attr.comment}
*/
<% }%>
private ${attr.type} ${attr.name} ;
<%}%> }

BeetlGenCode.java

package com.github.tungss.auth;

import org.beetl.sql.core.*;
import org.beetl.sql.core.db.*;
import org.beetl.sql.core.kit.*;
import org.beetl.sql.ext.gen.*; import java.io.*;
import java.util.Set; /**
* 生成dao代码.
*/ public class BeetlGenCode {
// ========数据库配置=========
private static String driver = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql:///auth?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC";
private static String userName = "root";
private static String password = "123456";
// ========模板的路径, 示例是spring boot的[src/main/resources/beetlsqlTemplate 文件夹]=========
private static String templatePath = "/beetlsqlTemplate";
// ========md生成路径 要提前创建=========
private static String mdPath = "/sql";
// ========生成实体类所在的包=========
private static String pojoPkg = "com.test.entity";
// ========生成mapper类所在的包=========
private static String mapperPkg = "com.test.dao"; /**
* 入口
*/
public static void main(String[] args) throws Exception {
genAll();
} public static void genAll() throws Exception {
//准备工作
ConnectionSource source = ConnectionSourceHelper.getSimple(driver, url, userName, password);
DBStyle mysql = new MySqlStyle();
SQLLoader loader = new ClasspathLoader(mdPath);
UnderlinedNameConversion nc = new UnderlinedNameConversion();
SQLManager sqlManager = new SQLManager(mysql, loader, source, nc, null); GenConfig config = new GenConfig();
config.setDisplay(false);
config.setPreferBigDecimal(true); System.out.println("======生成代码======");
Set<String> tables = sqlManager.getMetaDataManager().allTable();
for (String table : tables) {
System.out.printf("%-20s %s\n",table , "生成完毕");
//默认生成实体类的实现
sqlManager.genPojoCode(table, pojoPkg, config);
//自定义实现
genMd(sqlManager, config, table);
//自定义实现
genMapper(sqlManager, config, table);
}
System.out.println("=====生成完毕=====");
} /**
* 生成md文件
*/
public static void genMd(SQLManager sqlManager, GenConfig config, String table) throws IOException {
String fileName = StringKit.toLowerCaseFirstOne(sqlManager.getNc().getClassName(table));
if (config.getIgnorePrefix() != null && !config.getIgnorePrefix().trim().equals("")) {
fileName = fileName.replaceFirst(StringKit.toLowerCaseFirstOne(config.getIgnorePrefix()), "");
fileName = StringKit.toLowerCaseFirstOne(fileName);
}
String target = GenKit.getJavaResourcePath() + "/" + mdPath + "/" + fileName + ".md";
TableDesc desc = sqlManager.getMetaDataManager().getTable(table);
FileWriter writer = new FileWriter(new File(target));
MDCodeGen mdCodeGen = new MDCodeGen();
mdCodeGen.setMapperTemplate(config.getTemplate(templatePath + "/md.btl"));
mdCodeGen.genCode(sqlManager.getBeetl(), desc, sqlManager.getNc(), null, writer);
writer.close();
} /**
* 生成mapper
*/
public static void genMapper(SQLManager sqlManager, GenConfig config, String table) {
MapperCodeGen mapperCodeGen = new MapperCodeGen(mapperPkg);
mapperCodeGen.setMapperTemplate(config.getTemplate(templatePath + "/mapper.btl"));
mapperCodeGen.genCode(pojoPkg, sqlManager.getNc().getClassName(table), sqlManager.getMetaDataManager().getTable(table), null, false);
}
}

最新文章

  1. 最好的5个Android ORM框架
  2. ASP.NET MVC 设置Area中 Controller 的方法 默认启动页
  3. WCF基础教程之开篇:创建、测试和调用WCF
  4. IMapDocument interface
  5. gamework的使用方法
  6. BZOJ1044: [HAOI2008]木棍分割
  7. Bootstrap入门(九)组件3:按钮组
  8. Hbase的架构原理、核心概念
  9. 【Beta】Daily Scrum Meeting——Day2
  10. Flash与 Javascript 交互
  11. oracle自动备份_expdp_Linux
  12. tcpdump工具使用说明
  13. Java 显示读取properties 乱码解决方案
  14. 煎蛋ooxx
  15. Python3基础 list del 从内存中删除整个列表
  16. delphi Drag and Drop sample 鼠标拖放操作实例
  17. python文件操作 二
  18. PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作
  19. go语言学习之路(一)Hello World
  20. SVN服务器搭建和使用(转)

热门文章

  1. 143. Long Live the Queen 树形dp 难度:0
  2. c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
  3. self-taught learning setting &amp;&amp; semi-supervised learning
  4. Yii用AJAX注册验证
  5. Linux的发行版之间的联系和区别
  6. std::function与std::bind 函数指针
  7. GPU 服务器环境安装中一些基础note
  8. 【linux】less &amp;&amp;more
  9. (5)函数式接口的简单使用之Predicate
  10. ASP.NET 执行bat文件。