需求是要删除给定List里的所有对应id的购物车商品,我的第一个反应就是组合字符串
Session session = currentSession();
StringBuffer sql = new StringBuffer("delete from shopping_entry where id in (?");
for(int i=0; i < idList.size() - 1; i++){
sql.append(",?");
}
sql.append(")");
System.out.println("SQL: " + sql);
for(int i=0; i < idList.size(); i++) {
session.createSQLQuery(sql.toString()).setParameterList().setString(i, idList.get(i).toString()).executeUpdate();
<p> }</p><p>一运行发现这是什么鬼呀,创建了那么多Query,明显写错了......感觉这样组合SQL也不是一个什么很好地办法,从网上查了查,原来有这么简单的方法呀</p><p><pre name="code" class="java"> Session session = currentSession();
StringBuffer sql = new StringBuffer("delete from shopping_entry where id in (:idList)");
session.createSQLQuery(sql.toString()).setParameterList("idList", idList).executeUpdate();