首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PreparedStatement 不定参数处理「建议收藏」

PreparedStatement 不定参数处理「建议收藏」

作者头像
全栈程序员站长
发布2022-09-05 18:32:55
发布2022-09-05 18:32:55
4450
举报

大家好,又见面了,我是你们的朋友全栈君。

最近项目用到PreparedStatement,根据输入条件查询数据,输入条件不为空,则参与查询,为空,则不参与查询。网上搜了,也是按照网上的方法,也不算原创,记录一下。

参考文章:https://blog.csdn.net/dream_broken/article/details/44681597/

代码如下:

代码语言:javascript
复制
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
	conn = FSJDBCUtil.getConnection();
	StringBuffer sqlb = new StringBuffer("select * from table t where 1=1 ");
	List<String> params = new ArrayList<String>();
	if(StringUtil.isNotBlank(paramsA)){
	    sqlb.append(" and t.columA = ? ");
	    params.add(paramsA);
	}
	if(StringUtil.isNotBlank(paramsB)){
	    sqlb.append(" and t.columB like ? ");
	    params.add("%"+paramsB+"%");
	}
			
			
	ps = conn.prepareStatement(sqlb.toString());
	int j=1;
	for(String str:params){
	    ps.setString(j, str);
	    j++;
	}
	rs = ps.executeQuery();
			
} catch (Exception e) {
    e.printStackTrace();
}finally{
    FSJDBCUtil.close(rs, ps, conn);
}

对于参数类型不是同一类型的,处理办法:

代码语言:javascript
复制
List<Object> data = new ArrayList<Object>();
int j = 1;
for(Object obj:data){
    if(obj instanceof Integer){
	ps.setInt(j, (Integer)obj);
    }else if(obj instanceof String){
	ps.setString(j, (String)obj);
    }
    j++;
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137790.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档