问题:我将表的 SQL 语句存储在映射中,因为表的 PK 值映射到相应的插入/选择语句。但现在我遇到了一张使用复合 Key(4 Pk)的表。
现在我的逻辑基础动摇了,因为我读取的数组不能用作任何 Map 中的 Key 有什么办法可以克服吗?
我将地图声明如下
Map<String, String> pkMap= new Map<String, String>();
其中 key 是表的主键。
注意:我正在处理数据库中的少数表,并非所有表都有 4 PK,因为复合键少数可能只有 2 或 1
您可以简单地使用 a作为键(如果您想支持异构类型,List<String>甚至可以使用 a)。List<Object>如果两个列表具有相同的大小并且它们的所有成员都相等,则它们是相等的。
如何定义一个关键类:
class DBKeys {
private List<String> keys = new ArrayList<String>;
public void addKeyToList(String key) {
keys.add(key);
}
public List<String> getKeys() {
return keys;
}
// override hashcode and equals as well
}
然后将您的地图定义为
Map<DBKeys,String> = new HashMap<DBKeys,String>