SpringBoot+Beetlsql代码生成

一,加入beetlsql依赖

        <!-- beetl-framework-starter --><dependency><groupId>com.ibeetl</groupId><artifactId>beetl-framework-starter</artifactId><version>1.2.24.RELEASE</version></dependency>

二.配置

################### beetsql配置 ########################
# 默认是true,即向控制台输出执行时候的sql,参数,执行时间,以及执行的位置,每次修改sql文件的时候,自动检测sql文件修改
beetl-beetlsql:dev: true
beetlsql:basePackage: com.sybd.beetlsql.dao
#sql 文件的位置sqlPath: /beetlsqldaoSuffix: DaodbStyle: org.beetl.sql.core.db.MySqlStyle

三.创建模版文件
1.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}> {}

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

3.pojo.btl

package ${package};
import lombok.*;
${imports}
${implSerializable?"import java.io.Serializable;"}@Table(name="${table}")
@Data
@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} ;<%}%>}

图例

四,测试类生成代码

package com.test.broadcast;import org.beetl.sql.core.*;
import org.beetl.sql.core.db.DBStyle;
import org.beetl.sql.core.db.MySqlStyle;
import org.beetl.sql.core.db.TableDesc;
import org.beetl.sql.core.kit.GenKit;
import org.beetl.sql.core.kit.StringKit;
import org.beetl.sql.ext.gen.GenConfig;
import org.beetl.sql.ext.gen.MDCodeGen;
import org.beetl.sql.ext.gen.MapperCodeGen;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Set;/*** @author * @version 1.0.0* @ClassName BeetlSqlTest.java* @Description TODO* @createTime 2020年011月24日 19.24*/
public class BeetlSqlTest {// ========数据库配置=========private static String driver = "com.mysql.jdbc.Driver";private static String url = "jdbc:mysql://localhost:3306/books?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT";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 = "/beetlsql";// ========生成实体类所在的包=========private static String pojoPkg = "com.test.broadcast.entity";// ========生成mapper类所在的包=========private static String mapperPkg = "com.test.broadcast.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);config.setTemplate(config.getTemplate(templatePath + "/pojo.btl"));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();}/*** 生成dao文件*/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);}
}

注:代码内容参考自作者:蓝莲花;
项目链接地址:Gitee地址:https://gitee.com/edwarder/hospital-project.git

SpringBoot+Beetlsql代码生成相关推荐

  1. mvn打jar包的几个插件分析

    前言:在部署project项目时,希望项目目录结构是这样的:一个bin目录包含启动脚本.停止脚本.状态检查脚本等(在bin文件夹下 直接 ./项目名 start 就可以后台启动项目:./项目名 sta ...

  2. 采用SpringBoot、MyBatis-Plus 、Security框架,开发的一套权限系统,实现前后端分离,完善的代码生成机制

    项目说明 harry 采用SpringBoot.MyBatis-Plus .Security框架,开发的一套权限系统,实现前后端分离,完善的代码生成机制.Harry Gitee地址 harry-vue ...

  3. springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成

    大家好,我是烤鸭: 今天分享一下 springboot mybatis-plus 和 druid 的yml 配置文件. pom <dependency><groupId>org ...

  4. Mybatisplus代码生成 之SpringBoot适配MYSQL和ORACLE

    Mybatisplus代码生成 之SpringBoot适配MYSQL和ORACLE 文章目录 前期准备: 看图操作,一路下一步 1. 导入相关依赖 2. 新建代码生成类MysqlGenerator 2 ...

  5. Day14(springboot与mybatis整合、mybatis自动代码生成、swagger、thymeleaf、lombok环境配置、mybatisPlus介绍(自动代码生成))

    srpingboot和mybatis整合 springbootSSM项目下载地址 链接:https://pan.baidu.com/s/11fwh1C7ZOg3jQVlXl2DJjQ 提取码:83yt ...

  6. BeetlSQL框架学习(一)——初识BeetlSQL,特点,内置sql的使用,Pojo代码生成等...

    学习BeetlSQL总结(1) 一.BeetlSQL特点: 1.开发效率: (1)无需注解,能自动使用大量的内置sql,快速完成增,删,改,查的功能 (2)数据模型支持Pojo,也支持Map/List ...

  7. springboot集成beetlsql支持多数据源源码

    之前写过beetlsql的使用,有人留言要源码,本篇把springboot集成beetlsql的多数据源码列出.前文如下: springboot集成beetlsql以及支持多数据源_wuyang199 ...

  8. springBoot整合beetlsql

    springBoot整合BeetlSQL 文章摘要:本文主要介绍springBoot整合BeetlSQL,以及BeetlSQL自定义sql使用. 注:本例中,数据库将使用mysql,数据源使用阿里数据 ...

  9. SpringBoot 配置 generator代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)

    保姆级教程,逻辑删除及字段自动填充设置,特别要说明的是本次用的是MySQL数据库,如果使用Oracle数据库是,数据库配置需要改变,数据库表一定要大写,否则无法生成代码. 数据库表 CREATE TA ...

最新文章

  1. J.R.R.托尔金笔下的中土世界与《斗破苍穹》项目实践:从世界观解构入手场景设计
  2. 小程序WXML基本使用
  3. ASP.NET MVC 使用Log4Net记录系统运行中问题
  4. mysql给用户授权最大_mysql 给用户授权
  5. 实体服务与虚拟服务迎来数字化发展新契机 中关村助力首都全球数字经济标杆城市建设
  6. Tesseract-ocr实现图像文本识别
  7. android 颜色选择类
  8. 可查看抖音各项数据的软件有哪些?99%的人可能不知道这3款
  9. 班主任工作总结中职计算机网络,中职班主任工作总结(精选5篇)
  10. 转:淘宝客搜索链接技巧首度分享
  11. 产品的10大设计原则
  12. 高德离线地图开发API
  13. cf 1324D. Pair of Topics
  14. 计算机通电后自动断电,电脑自动断电,教您电脑开机自动断电怎么解决
  15. 0x0D 0x0A
  16. adc0804c语言程序,模数转换ADC0804的应用实例(含源程序及电路)
  17. 某电子计算机主机,2018年南开大学数学科学学院432统计学[专业硕士]之概率论与数理统计教程考研仿真模拟五套题...
  18. 逐梦AI路,你的孩子气,让你足够强大
  19. 仿微信支付密码的弹框
  20. onnx模型识别踩坑

热门文章

  1. 一叶知秋:通过Incloud Rail感受浪潮超融合架构
  2. 公司短信平台上的2万块钱,瞬间就被黑光了
  3. cmd控制台窗体大小设置
  4. 电影——《小萝莉的猴神大叔》
  5. 聊聊我的 Pandas 学习经历及动手实践
  6. USACO 3.2 Magic Squares 魔板 (BFS-HASH)
  7. 人工功能计算机,语音人工计算器
  8. 6月29日云栖精选夜读:Java、PHP、Python、JS 等开发者都如何绘制统计图
  9. iOS开发笔记--Facebook POP 进阶指南
  10. 拼多多2020校招部分编程题