数据库的表translate有code和name两个字段,程序代码中,
private static Map<String,String> cnEnMap=new HashMap<String,String>();
public static Map<String,String> getCnEnMap(){
if(cnEnMap.size()<1)
initEnCnMap();
return cnEnMap;
}
private static void initEnCnMap(){
try{
String enCnSql="select a.CODE,a.NAME from translate a";
List enCnList=jdbc.executeParameterizedQuery(enCnSql, new Object[]{});
if(enCnList!=null&&enCnList.size()>0){
for(Object obj:enCnList){
List temp=(List)obj;
cnEnMap.put(StringUtil.toString(temp.get(1),true), StringUtil.toString(temp.get(0), true));
}
}
} catch (Exception e){
e.printStackTrace();
}
}
当表translate中增加一条数据"new,新"时,hashmap未能及时更新,用getCnEnMap().get(new)没有得到“新”的信息。
解析数据时,不可能每一条数据都要重新查询数据库,不然map存在的意义就不大了,所以都设置成了static的。
怎么解决这个问题?
当然没新数据了。。你插入数据的时候,去维护这个map了么?
要想能查到,就需要你插入数据库的时候同时插入缓存。。。解决这个问题。。。最简单的就是把你的这个类提供一个put方法,用于put到map中。另外,如果是多线程程序,别用map。不然会出问题。