/**
* 比如在项目中我们经常遇到这样的问题,从前台我们选择了好多id,在后台我们需要用一个数组来接,
* 而我们真正要做的是通过sql来查询出和id有关的对象,这里我们经常要用到sql语句的in关键字
* 但是我们只是接了一个数组,而真正要做的是要弄成这样的格式:from XXX where id in('xxx','xxx','xxx');
* 所以我们现在要做的是把数组弄成括号里面的那种格式
*/
public class Test {
public static void main(String args[]){
//怎么从前台接的数组就不说了,我写了一个固定的string数组在下面,假如数组里面的就是我们从前台接来的id
String ids[]=new String[]{"120","121","122","124","125"};
/***********第一种方法 开始**************/
StringBuffer sb = new StringBuffer();
for(int i=0;i<ids.length;i++){
sb.append("'" + ids[i] + "'");
if(i != ids.length -1){
sb.append(",");
}
}
//通过上面的StringBuffer我们已经得到了要拿到的格式,下面就可以写sql语句了
String hql = "from xxx where id in (" + sb.toString() + ")";
//通过下面的list集合我们就拿到了对象集
List list = xxxDAO.getHibernateTemplate().find(hql);
/***********第一种方法 结束**************/
/***********第二种方法 开始**************/
//通过增强for循环得到我们需要的格式
String needId = "";
for(String id : ids){
needId += "'" + id + "'" + ",";
}
needId = needId.substring(0, needId.length()-1);
//通过上面的这句代码我们已经拿到了想要的格式,接下来就可以放到sql语句当中去了
String needHql = "from xxx where id in (" + needId + ")";
//通过下面的list集合我们就拿到了对象集
List objectList = xxxDAO.getHibernateTemplate().find(needHql);
/***********第二种方法 结束**************/
/***********第三种方法 开始**************/
//通过iterator的迭代来得到我们需要的格式 这里只是举例 没有对应的vo和实现类
List<deptListVOImpl> xbs = deptListDAO.getDeptList(dproj_id, "xb");
if(xbs.size()>0){
Iterator it1 = xbs.iterator();
String xb = "";
while (it1.hasNext()) {
deptListVOImpl detail = (deptListVOImpl) it1.next();
xb += detail.getDeptName() + ",";
}
xb = xb.substring(0,xb.length()-1);
//现在拿到的xb就是我们要得到的格式
}
/***********第三种方法 结束**************/
}
}
遍历数组中字段,加逗号隔开
最新推荐文章于 2024-01-12 17:11:37 发布