JAVA拼接多条件SQL查询

30 篇文章 2 订阅

在开发的过程中,我们可能需要大量的从数据库查询数据进行交互;很常见的查询逻辑,where后面的条件是多个需要拼接的;
这里提供一个基本案例;

private void initUserCodeMap(Set users){
	String wherecondtion=processArrayToString(users);
	String orgsql=“select cuserid, user_code from sm_user where cuserid in “+wherecondtion;
	try {
		this.userCodeMap.clear();
		ArrayList list= (ArrayList) getquerybs().executeQuery(orgsql, new ArrayListProcessor() );
		for(int i=0;i<list.size();i++){
			Object[] o=(Object[]) list.get(i);
			String pk_stordoc=(String)o[0];
			String code=(String)o[1];
			this.userCodeMap.put(pk_stordoc, code);
		}
	} catch (BusinessException e) {
		e.printStackTrace();
	}
}

这是对查询的结果集放在map中处理,查询多个值的Set对象处理结果集的多个对象;
下面是对查询条件的SQL拼接

private String processArrayToString(Set attr){
	if(attr==null||attr.isEmpty()){
		return “”;
	}
	StringBuffer sb=new StringBuffer();
	sb.append(();
	for (String str:attr){
		sb.append("’");
		sb.append(str);
		sb.append("’");
		sb.append(",");
	}
	String str=sb.substring(0, sb.length()-1);
	str=str+")";
	return str;
}

这里的参数类型需要初始化private Setusers=new HashSet();
简单的实现多参数的SQL查询;可以作为基本工具类使用;

实际中还要考虑数据库,比如oracle in条件值不可超过1000的问题

ncc 处理“in“不能查询超过1000条的数据:
在这里插入图片描述

import nccloud.impl.platform.db.processor.InSqlManager;

--创建sql语句

StringBuffer sql = new StringBuffer("delete from 表 where 字段 in ");

--拼接in里的查询数据

sql.append(InSqlManager.getInSQLValue(数据集.toArray(new String[0])));

--执行sql语句

dao.executeUpdate(sql.toString());

原文链接:https://blog.csdn.net/qq_33639332/article/details/84324476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值