不确定传入参数个数的数据库查询方法

有一种场景,当我们需要查询数据库中的一些数据时,这些数据可能是同一个类别的不同标号的数据
类似于下图这种
数据库中的一个表
这个表中的数据是属于 cid = 5 类别且同时又有不同的 rname值。

1.有时我们是根据 cid 和 rname 同时查找一些数据

2.有时也可能只用 rname 来查数据。这时候就可以加入一些小技巧。

String sql = "select count(*) from XXX where 1 = 1 ";//末尾有空格
StringBuider sb = new StringBuilder(sql);
List params = new ArrayList();
if(cid != 0){
	sb.append(" and cid = ?");
	params.add(cid);//添加? 对应的值
}

if(rname != null && rname.length() > 0){
	sb.append(" and rname like ? ");
	params.add("%"+rname+"%");
}

sql = sb.toString();
return template.queryForObject(sql, Integer.class, params.toArray());

这样考虑了有 cid 的情况和没有的情况。因为不确定有几个参数,所以我们传入的是一个参数列表。

StringBuffer对象代表一个字符序列可变的字符串,可以根据需要通过StringBuffer提供的append()、insert()等方法可以改变这个字符串对象的字符序列。这是把String 转化为 StringBuider的原因。

猜你喜欢

转载自blog.csdn.net/EEstefan/article/details/106733598