• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

sql-builder: 一个帮助sql语句从java代码里解放出来的工具.

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

sql-builder

开源软件地址:

https://gitee.com/unknow0409/sql-builder

开源软件介绍:

不再为Java代码中难以维护的Sql语句而烦恼,SqlBuilder帮助您!

工具优势

整个工具大小仅36.6KB
读取外部sql.md文件并缓存
开放SqlRenderEngine接口让您可以自己渲染原生语句
内部已集成只要引入jar包即可直接使用的模板引擎(Beetl、Freemarker)

1分钟快速配置

  1. 将 sqlbuilder-config-default.properties 拷入您的项目src文件夹下
  2. 并将其更名为 sqlbuilder-config.properties
  3. sqlFolders 填入sql文件存放目录,多目录用逗号(,)分隔
  4. sqlMode 选择运行模式,run模式为产品模式读取缓存速度快,没有实时性;debug为开发模式,实时监测sql文件变化改动sql无需重启
  5. 引入 sql-builder-v1.3.5.jar 包
  6. Java 代码内调用
/** * 如果您需要使用模板引擎来渲染那么 * 在这里设置一个全局引擎 * 比如我使用beetl引擎   */SqlBuilder.setEngine(new SqlBeetlEngine());    // 获取sql语句,test为文件名称,findSqlOfBeetl为语句唯一id,重名则获取第一个  String sql0 = SqlBuilder.render("test.findSqlOfBeetl");  // 该传参构造在 v1.3.5 版本已不推荐使用String sql1 = SqlBuilder.render("test.findSqlOfBeetl", new SqlBuilderPara("name", "颖"), ...); // 推荐使用String sql2 = SqlBuilder.sql("test.findSqlOfBeetl")// 不指定engine则使用全局引擎// 指定模板渲染引擎,仅作用于该条语句,后设置会覆盖前设置// 使用 freemarker 引擎.engine(SqlFreemarkerEngine.class)// 使用 beetl 引擎.engine(SqlBeetlEngine.class)// 设置参数.para("name", "颖").para(..., ...)// 渲染语句.render();

测试用例

test.md 文件

findSqlOfFreemarker===-- 外部sql一样可以写注释select * from T_TEST AS i <#if order ??>ORDER BY i.date ${order} </#if>findSqlOfBeetl===-- 注释2select * from T_TEST AS i <%if (!isEmpty(name)) {%>where i.name = '${name}' <%}%>fromUserId===from user where id = ? findUserName===-- 语句引入函数-- 引入本文件直接写语句名称-- 引入它文件如普通调用 test.yourSqlName 即可select username sql('fromUserId') 

Tester.java 测试类

// 设置 全局模板引擎SqlBuilder.setEngine(new SqlBeetlEngine());// BeetlString sql1 = SqlBuilder.render("test.findSqlOfBeetl", new SqlBuilderPara("name", "颖"));System.out.println("Beetl渲染:");System.out.println(sql1);// Freemarker// 设置 单独模板引擎String sql2 = SqlBuilder.render(new SqlFreemarkerEngine(), "test.findSqlOfFreemarker", new SqlBuilderPara("order", "DESC"));System.out.println("Freemarker渲染:");System.out.println(sql2);// 语句引入函数用例String sql3 = SqlBuilder.render("test.findUserName");System.out.println("sql('...') 函数渲染:");System.out.println(sql3);

输出结果

Beetl渲染:  select * from T_TEST AS i where i.name = '颖'  Freemarker渲染:  select * from T_TEST AS i ORDER BY i.date DESC  sql('...') 函数渲染:  select * from user where id = ?  

更新日志

v1.3.5
[新增] 增加新的构造方式 SqlBuilder.sql('fileName.sqlId').para(key, value).para(key, value).render();

v1.3.4
[修复] SqlBuilderPara 传 null 值会发生错误的问题

v1.3.3
[修复] SqlBuilderModel 无法toJSONString的问题

v1.3.2
[新增] SqlBuilderModel 类支持jfinal的快速使用
[新增] 配置文件 sqlDebug=true 调试模式,输出渲染前后语句以及参数

v1.3.1
[优化] 达梦数据库SQL语句渲染代码

V1.3
[新增] sql('...') 语句引入函数支持
[新增] 中间件接口,提升扩展性

V1.2
[新增] log4j 日志
[新增] 国产达梦数据库sql语句渲染支持
[优化] 使用Sonarqube对代码质量进行优化
[修复] 修复了一些小bug
[测试] 根据在正式商业项目中上线使用进行的优化调整

v1.1
[优化] 移除了对 apache-commons-lange3工具包的依赖

v1.0
[出生] 项目首次登录 git.


未完待续感谢您花费时间阅读这份说明稿。

今天是我生日,Happy birthday to me。

作者 cjd
2017 年 12月22日


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap