三个模板文件

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}<%}%>

View Code

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);}
}

转载于:https://www.cnblogs.com/startnow/p/10230274.html

Beetlsql自定义生成entity,mapper,md代码相关推荐

  1. md文件生成Java代码_Beetlsql自定义生成entity,mapper,md代码

    packagecom.github.tungss.auth;import org.beetl.sql.core.*;import org.beetl.sql.core.db.*;import org. ...

  2. vs2017 自定义生成规则 错误 MSB3721 命令 ”已退出,返回代码为 1。

    错误 MSB3721 命令 "已退出,返回代码为 1. 解决办法:去掉yasm复选框,改为masm vs2017 自定义生成规则-编译汇编代码 VC++调用yasm编译汇编代码有三种方法:C ...

  3. java自动生成entity文件

    网上关于自动生成entity文件的代码很多,看了很多代码后,在先辈们的基础上再完善一些功能(指定多个表,全部表). 为了使用方便所以把两个类写在一个java文件中,所以大家可以直接拿这个java文件, ...

  4. 代码演示Mybatis-Generator 扩展自定义生成

    Mybatis-Generator 可自动生成Model.Dao.Mapper代码,但其自带生成的代码存在以下问题: 生成的注释不是我们想要的,我们期望的是根据数据库表.字段生成不同的注释: 分页代码 ...

  5. 自动生成mybatisplus的相关代码

    导入对应的jar包,这就不用多说了 package com.app.appapi.generatorcode;import com.baomidou.mybatisplus.core.toolkit. ...

  6. MyBatis-Plus之通过插件将数据库表生成Entiry,Mapper.xml,Mapper.class的方式。

    1.参考网址:http://mp.baomidou.com/#/generate-code 2.创建maven项目,修改pom.xml文件,如下: <?xml version="1.0 ...

  7. php lmpl,tjx-cold: 用于根据配置模板,快速生成controller,service,serviceimpl 代码

    用于根据配置模板,快速生成controller,service,serviceimpl 代码(交流群 623169994 ) 为什么要开发这款插件 市面上有很多基于数据库生成代码的工具,但是我自己的工 ...

  8. mybatis15 mapper方式 代码

    UserMapper.java package cn.itcast.mybatis.mapper;import java.util.List;import cn.itcast.mybatis.po.U ...

  9. java 生成token代码_java token生成和校验的实例代码

    现在越来越多的登录方式都用到了token作为用户登录令牌,所以实现了一个token生成和校验案例. 缺点:该实现方式token是存储在内存中,不适合分布式项目,如需改为分布式项目部署,可把token存 ...

最新文章

  1. JsRender (js模板引擎)
  2. 周昌印:忘记技术 从用户与市场考虑问题
  3. 使用WebRTC和WebVR进行VR视频通话
  4. 三星集团总市值达3220亿美元,高阿里巴巴近千亿
  5. Android简单的TXT文件存储
  6. [bzoj4592] [Shoi2015]脑洞治疗仪
  7. 服务器cpu哪个型号超频,服务器CPU也超频,AMD霄龙性能暴涨1.5倍-控制器/处理器-与非网...
  8. 计算机设备序列号都一样,如何使用adb工具
  9. csdn发布文章无法查看
  10. (摘)老司机也必须掌握的MySQL优化指南
  11. 校验身份证_制作全国身份证号验证及查询系统
  12. 【动态主席树】ZOJ 2112【树状数组+主席树】
  13. vijos 1082
  14. html链接打开word文档,一招教你在Word文档中创建超链接打开其他文件
  15. twitter api java使用_twitter api问题
  16. 在Ubuntu 10.04中安装 insight
  17. 基于物理的渲染PBR(一):pbr的基础理论和推导
  18. 永磁同步电机(三)——三相永磁同步电机仿真
  19. IT十年人生过客-二十七-艰难
  20. 后台自动定时切换壁纸工具

热门文章

  1. ubuntu install fonts
  2. C++ 关于方法传值
  3. HDU-2094 产生冠军
  4. iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge
  5. django 添加comments app
  6. nginx、apach、php、mysql编译参数
  7. Circle Line
  8. 用ASP.NET AJAX 开发Web程序 — UpdatePanel篇
  9. Spring Aop实例之xml配置
  10. spring管理hibernate的SessionFactory-多种配置方法