java中的复杂查询sql语句怎么写?

java中的复杂查询sql语句实现:

在这里插入图片描述
这样的查询栏,在页面中很常见,这就是复杂查询的条件,我们可以填写一个条件或多个条件,也可以一个都不填写,在这样的情况下我们的sql语句就不能是一个固定的String类型的字符串。

看到这相信大家都想到用什么来定义sql语句了,没错就是StringBuilder,基本模板应该就是

 String sql = "select * from `user` ";
 StringBuilder sb = new StringBuilder(sql);

但是这一步之后就存在一个难点,如何添加查询条件呢?
判断每一个条件,如果条件存在且不为空,拼接字符串,用模糊查询

sb.append(" where name like ? ");

理论上没错,但是如果多个条件呢?
sql语句就存在问题了,当多个条件存在时,sql语句就被拼接成

String sql = "select * from `user` where name like ? where address like ?" 

这明显是不行的,有一个最简单的方法去定义一个正确的基本模板

String sql = "select * from `user` where 1 = 1 ";

在上面的模板上添加一个where 1 = 1 ,恒成立条件,无论有没有条件,都可以运行,那么存在条件的拼接语句就可以写出来了

sb.append(" and name like ? ");

String sql = "select * from `user` where 1 = 1 " //没有条件的查询
//当多个条件存在时
String sql = "select * from `user` where 1 = 1  and name like ?  and address like ? "
//多个条件也能成立

但是还有两个特别需要注意的点就是:
1.拼接字符串时,应该在拼接的开头敲上一个空格,这样才能让拼接起来的字符串之间存在空格不会变成连在一起的字符串,那样也会报错
2.填充占位符时,直接把值填上是不行的,因为我们需要的是模糊查询,所以我们应该在填充值的时候在值的前面和后面加上“%”号


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要规范化SQL语句的书,可以使用Java代码的字符串操作和正则表达式来实现。下面是一个示例代码,它演示了如何规范化SQL语句的书风格: ```java public class SQLFormattingExample { public static void main(String[] args) { String sql = "select * from table_name where id = 1 and name='John' order by created_at desc"; // 规范化SQL语句 String formattedSQL = formatSQL(sql); System.out.println(formattedSQL); } public static String formatSQL(String sql) { // 去除多余的空格和换行符 sql = sql.trim().replaceAll("\\s+", " "); // 将关键字转换为大 sql = sql.toUpperCase(); // 在关键字之间添加空格 sql = sql.replaceAll("(?i)(SELECT|FROM|WHERE|AND|OR|ORDER BY|GROUP BY|JOIN)", " $1 "); // 在逗号后面添加空格 sql = sql.replaceAll(",", ", "); return sql; } } ``` 在上面的示例代码,我们定义了一个 `formatSQL()` 方法,它接受一个原始的SQL语句作为输入,并返回一个规范化后的SQL语句。首先,我们使用 `trim()` 方法去除SQL语句开头和结尾的空格,并使用正则表达式 `\\s+` 将连续的多个空格替换为一个空格。然后,我们使用 `toUpperCase()` 方法将SQL语句的关键字转换为大。接着,我们使用正则表达式将关键字前后添加空格,以及在逗号后面添加空格,从而得到规范化后的SQL语句。 在 `main()` 方法,我们使用一个示例的SQL语句调用 `formatSQL()` 方法,并打印规范化后的SQL语句。 请注意,这只是一个简单的示例,实际的SQL规范化可能更加复杂,需要根据具体的规范和要求进行定制。你可以根据自己的需求扩展 `formatSQL()` 方法,添加更多的规范化逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值