一个简单的sql生成器

当没有使用orm框架,只是使用了jdbc的轻量级封装时,手写string sql会比较平凡,大家知道sql拼接时,如果有条件分支那么字符串拼接很“难看”,为了解决工作中遇到的这个问题我写了一个简单的基于java的sql生成器,因为简单,所以可以轻松根据自己的需要轻松更改。

string-sql生成器是一个简单实用的基于string的sql生成器,支持通过创建对象的方式完成sql拼接,有助于不实用ORM框架的用户灵活搭配sql, 所有的表名,字段,占位符均需要用户输入。

通过SqlBuilderFactory可以创建两种builder,一种为遵循sql语法,另一种则是用户随意构建。用法如下:

(项目地址https://github.com/Warmriver/SqlGeneratorBasedOnString喜欢的话给个star吧 :)

// 不严格的builder,可以使用任意字段
NonStrictQueryBuilder builder = SqlBuilderFactory.nonStrictSqlBuilder();
builder = builder.select("t1.id").from("t1").leftOuterJoin("t2").on("t1.id == t2.id");
if(true){
    builder = builder.where("t1.status=2");
}
builder = builder.and("t2.time > 20251201").having("t1.id in (10,100)").limit(0, 1000);
builder.buildSql(); // 结果: select t1.id from t1 left outer join t2 on t1.id == t2.id where t1.status=2 and t2.time > 20251201 having t1.id in (10,100) limit 0,1000

// 严格类型的生成器,使用时不能违反sql的约定,例如:from关键字后面不能用select
String sql = SqlBuilderFactory.strictSqlBuilder()
                .select("t1.id")
                .from("t1")
                .leftOuterJoin(builder.buildSqlWithBracket() + "as t2") // builder.buildSqlWithBracket是将一个sql作为一个
                .on("t1.id == t2.id", "t1.name=t2.name")
                .where("t1.status=2")
                .buildSql(); //结果/result: select t1.id from t1 left outer join (select t1.id from t1 left outer join t2 on t1.id == t2.id where t1.status=2 ) as t2 on t1.id == t2.id and t1.name=t2.name where t1.status=2

 

一、简介 1.1前言 1、由于最近工作一直用Oracle,故对Oracle数据库研究为对象。 2、根据工作业务需求实际情况进行功能研发。为什么要开发呢?因为在数据库升级或者迁移的时候,为了保证不同环境不同数据库数据保持同步,故数据库SQL脚本非常作用。比如:数据库主脚本,副脚本,增量脚本。 3、 什么是主脚本、副脚本、增量脚本呢? 3.1、主脚本指数据库表或存储过程,视图脚本,序列等脚本。 3.2、副脚本指必须执行主脚本之后才执行的脚本。换句话说在没执行主键脚本的情况下,副脚本执行之后会回滚事务失败。 3.3、增量脚本指在执行主脚本或副脚本之后,根据需求对某个表添加/修改约束(主外键约束,长度约束等),添加/修改字段/添加数据等情况对数据库结构改变处理的一种行为脚本。 1.2作用 1、 快速产出自定义规则需要的SQL脚本。 2、减少人工编写SQL脚本出错率问题,完全通过程序检测SQL准确性。 3、帮助开发人员提高SQL编写效率,减少人工编写SQL开发成本问题。 4、帮助开发人员节约时间,同时避免繁琐不必要编写SQL的工作。 二、实现方式与原理 2.1实现方式 1、实现方式分:正向与逆向实现。什么是正向与逆行呢【是否有鸡还是有蛋,先后道理同等】 2、正向方式:首先把设计好数据库表文档,把所有表的字段属性配置到EXCEL或者CSV格式的文件通过JXL/POI技术去读取文件的字段,再通过其他技术一系列程序处理之后生成所需要的SQL脚本。 3、逆向方式:首先有数据库表,然后通过ORM持久化技术连接数据库再读取表的字段等属性出来,再通过其他技术一系列程序处理之后生成所需要的SQL脚本。 2.2原理 对数据库软件内置核心表或视图查询出来存储用户行为表结构所有属性信息,对此属性结构信息进行分析与组装所需要SQL脚本。
MySQL SQL生成器是一种数据库编程软件,它可以帮助用户快速生成SQL语句SQL语句自动生成器正式版是一款功能强大、实用方便的数据库编程软件,支持桌面数据库和大中型数据库,以及排序、条件、分组、函数等多种SQL语法。\[1\]要使用MySQL SQL生成器,首先需要确认安装成功。可以通过执行build操作来确认安装成功,具体步骤如下:切换到mysql_markdown目录下,执行以下命令:cd mysql_markdown go get "github.com/go-sql-driver/mysql" go build mysql_markdown.go\[2\]执行完build操作后,会在mysql_markdown目录下生成一个mysql_markdown.exe文件,即将go编译成了一个可执行文件。接下来,可以通过执行以下命令来使用MySQL SQL生成器:mysql_markdown -h yourhost -u yourusername -p yourpwd -d yourdatabase -P yourport\[3\]其中,yourhost是主机名,yourusername是用户名,yourpwd是密码,yourdatabase是数据库名,yourport是端口号。通过这些步骤,你就可以使用MySQL SQL生成器生成SQL语句了。 #### 引用[.reference_title] - *1* [SQL语句生成器](https://blog.csdn.net/weixin_34858011/article/details/116127436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [mysql表结构生成工具——mysql_markdown](https://blog.csdn.net/tangsiqi130/article/details/127738801)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值