我有这样的表
VID CID RID
101 151 BE
114 154 BE
114 155 BE
115 17 LU
115 151 BE
115 155 BE
113 156 BE
113 166 BE
如果用户传递151 BE作为输入,我只需要传递101, 如果用户传递154 BE和155 BE作为输入,则我只需要传递114
输入151 BE或154 BE和155 BE我将使用List传递它。
那么在java或oracle中实现这个目标的最有效方法是什么?
java中有没有特定的方法来实现这个目标?
答案 0 :(得分:0)
我想我理解你在问什么,给出如何返回匹配的VID的条件列表:
如果这是您的实体:
class Entity
{
private VID vid;
private RID rid;
private CID cid;
public Entity()
{
}
//the proper getter and setters
}
这是我根据条件构建查询的方式:
//private List<VID> getCommonVID(CID[] cids, RID[] rids) -- could also use an array
private List<VID> getCommonVID(List<CID> cids, List<RID> rids)
{
String sql = "";
sql += "SELECT entity.VID FROM TABLE";
+ "WHERE ";
int cnt = 0;
int max = rids.length;
//build sql String
for(int i = 0; i < max; i++)
{
String op = (cnt == 0)? "":" AND ";
sql += op + "Entity.CID = :" + String.valueOf(cids.get(i));
sql += " AND " + "Entity.RID = :" + String.valueOf(rids.get(i));
}
Query q = new Query(sql);
for(int i = 0; i<max; i++)
{
q.setParameter(String,valueOf(cids.get(i)), cids.get(i))
q.setParameter(String,valueOf(rids.get(i)), rids.get(i))
}
List<VID> vids = q.getResultList();
if(vids.size() < 1) return new ArrayList();
else return vids;
}
答案 1 :(得分:0)
我认为在你的情况下(你没有很多行inser)使用java.in commons当我们想要插入大量的行时直接使用dabaseserver(迁移例如...)。