一个简单的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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值