19/07/16

就是项目的代码是我自己写的,我也不知道这么写到底规范,但是可以实现相应的功能

先説一下具体的逻辑:一个角色下对应有多个用户,把一个通知可以发送给多个角色/用户(角色的功能不易写,用户和其差不多,还比其简单),该通知只有在超级管理员下有一个读取的状态,该状态能显示所有角色下的所有用户是否读取,读取状态由,当属于该通知的用户登录后并查看,变为已读取。

1 先读取的代码

把String类型转化为map类型。因为数据库不能存储map类型的字段 ,我感觉是因为一个用户对应一个状态,只能用map存储,而且一个通知对应多个用户,一个用户对应多个通知,所以我自己觉得不可以在表上加字段 ,只能是存储的时候,用map形式存。而且我还比较不容易理解的是,如果数据库里面新增了一个用户(每一个用户都会有一个角色)的数据,如果它所对应的角色有通知的情况下它的信息还要在其对应的读取状态下显示出来。可是我这个读取状态是在新建这条通知保存时存的一个死的map的值在数据库中,所以我在读取时和在查看时,又重新遍历了一次数据库,查看有没有新的用户,把其新添加进map中(g还是死的),所以需要每次查看和读取都需要重新遍历一次数据库,所以感觉与数据库之间的交互很大,但是想不出其他的办法,如果有哪位大神看到的话,可以提出建议,非常感谢了。

Map countryMap = new HashMap();
                 for(PageData pData :result){
                        countryMap1.put(pData.getString("USER_ID"), "0");
                    
                 }
                String cms =smap.replace("{", "").replace("}", "");
                String[] countryMapStr = cms.split(",");    
                for(String  s:countryMapStr ){
                            String[] ms = s.split("=");
                            countryMap.put(ms[0].trim(), ms[1]);
                         
                }  

            //把两个map中相等的元素值比较,countryMap1是重新遍历数据库获得的新的用户的数据,countryMap是从数据库中查询出来的那个死的map值,
                for(Entry vo : countryMap1.entrySet()){
                    for(Entry vo1 : countryMap.entrySet()){
                 if( vo.getKey().equals(vo1.getKey())){
                     if(countryMap1.containsKey(vo.getKey())){
                         countryMap1.put(vo.getKey(), vo1.getValue());
                     }
                 }
                
                  }} 

你可能感兴趣的:(19/07/16)