麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

Java操作MongoDB插入數(shù)據(jù)進行模糊查詢與in查詢功能

2024-07-14 08:43:04
字體:
供稿:網(wǎng)友

由于需要用MongoDB緩存數(shù)據(jù),所以自己寫了一套公共的存放和讀取方法

具體如下:

存放mongodb:

/**   * 公共方法:設(shè)置Object類型緩存   * @author shijing   * @param param   * @param sysGuid   */  public void setObjData(Map<String,Object> param, String sysGuid, String enumBpd){    DBObject dbObject = new BasicDBObject();    dbObject.putAll(param);    String collectionName = EnumBpd.getBpdType(enumBpd) + sysGuid;    mongoDao.insertToCol(dbObject,collectionName);  }  /**   * 公共方法:設(shè)置List緩存   * @author shijing   * @param paramList   * @param sysGuid   */  public void setListData(List<Map<String,Object>> paramList, String sysGuid, String enumBpd){    List<DBObject> list = new ArrayList<>();    if(CollectionUtils.isNotNull(paramList)){      for (Map<String,Object> param : paramList){        DBObject dbObject = new BasicDBObject();        dbObject.putAll(param);        list.add(dbObject);      }    }    String collectionName = EnumBpd.getBpdType(enumBpd) + sysGuid;    mongoDao.insertToCol(list,collectionName);

mongoDao里面的方法:

public void insertToCol(DBObject document, String collectionName) {    dropCol(collectionName);    DBCollection dbCollection = mongoTemplate.createCollection(collectionName);    dbCollection.insert(document);  }  public void insertToCol(List<DBObject> documents, String collectionName) {    dropCol(collectionName);    DBCollection dbCollection = mongoTemplate.createCollection(collectionName);    dbCollection.insert(documents);  }

讀取方法

/**   * 通過關(guān)鍵字模糊查詢問題和答案庫   * @param param   * @return   */  @Override  public List<Map<String, Object>> searchQuestionAndAnswerByKeyword(Map<String, Object> param) {    List<Map<String,Object>> searchList = new ArrayList<>();    Map<String,Object> userInfo = SessionUtils.getUserInfo();    String sysGuid = userInfo.get("sys_guid").toString();    String collectionName = EnumBpd.getBpdType(EnumBpd.HELP_PAGE_LIST.getType())+sysGuid;    //注釋里面這種方式雖然能模糊查詢,但是容易漏掉數(shù)據(jù),切記切記!!!    //Pattern pattern = Pattern.compile("^.*" + param.get("keyword") +".*$", Pattern.CASE_INSENSITIVE);    BasicDBObject query= new BasicDBObject();    //模糊查詢的字段設(shè)置    query.put("page_html", Pattern.compile((String) param.get("keyword")));    DBCursor dbCursor = mongoDao.findAll(query,collectionName);    List<DBObject> list = dbCursor.toArray();    for (DBObject dbObject: list){      searchList.add(dbObject.toMap());    }    //模糊查到的數(shù)據(jù)進行組裝    return getQuestionAndAnswerList(searchList);  }  /**   * 公共方法:批量—— in方法查詢List數(shù)據(jù)   * @author shijing   * @param ids id集合   * @param paramMap 其他參數(shù)   * @param columnName in字段列名   * @param collectionName 表名   * @return   */  @Override  public List<Map<String, Object>> batchSearchPageListByIds(List<String> ids, Map<String,      Object> paramMap, String columnName, String collectionName) {    List<Map<String,Object>> searchList = new ArrayList<>();    BasicDBObject query= new BasicDBObject();    //批量查詢,in    if (CollectionUtils.isNotEmpty(ids)){      BasicDBList values = new BasicDBList();      values.addAll(ids);      query.put(columnName, new BasicDBObject("$in",values));    }    //拼接參數(shù)    if(MapUtils.isNotEmpty(paramMap)){      for (String mapKey: paramMap.keySet()){        query.put(mapKey, paramMap.get(mapKey));      }    }    DBCursor dbCursor = mongoDao.findAll(query,collectionName);    List<DBObject> list = dbCursor.toArray();    if (dbCursor!=null && dbCursor.size()>0){      for (DBObject dbObject: list){        searchList.add(dbObject.toMap());      }    }    return searchList;  }  /**   * 公共方法:通過參數(shù)獲取List數(shù)據(jù)   * @author shijing   * @param paramMap 參數(shù)   * @param collectionName  表名   * @return   */  @Override  public List<Map<String, Object>> getListByParam(Map<String, Object> paramMap,String collectionName){    List<Map<String,Object>> searchList = new ArrayList<>();    BasicDBObject query= new BasicDBObject();    //拼接參數(shù)    if(MapUtils.isNotEmpty(paramMap)){      for (String mapKey: paramMap.keySet()){        query.put(mapKey, paramMap.get(mapKey));      }    }    DBCursor dbCursor = mongoDao.findAll(query,collectionName);    List<DBObject> list = dbCursor.toArray();    if (dbCursor!=null && dbCursor.size()>0){      for (DBObject dbObject: list){        searchList.add(dbObject.toMap());      }    }    return searchList;  }  /**   * 公共方法:通過參數(shù)獲取Object數(shù)據(jù)   * @author shijing   * @param paramMap   * @param collectionName 表名   * @return   */  @Override  public Map<String, Object> getObjectByParam(Map<String, Object> paramMap, String collectionName) {    Map<String,Object> webSiteInfo = new HashMap<>();    BasicDBObject query= new BasicDBObject();    //拼接參數(shù)    if(MapUtils.isNotEmpty(paramMap)){      for (String mapKey: paramMap.keySet()){        query.put(mapKey, paramMap.get(mapKey));      }    }    DBObject dbObject = mongoDao.findOne(query,collectionName);    if(dbObject!=null){      return dbObject.toMap();    }    return webSiteInfo;  }

注意事項:

mongodb模糊查詢時

Pattern pattern = Pattern.compile("^.*" + param.get("keyword") +".*$"

這種方式存在bug, 容易漏掉數(shù)據(jù)

應(yīng)該使用下面這種方式:

query.put("page_html", Pattern.compile((String) param.get("keyword")));

先記錄到這吧,有需要在補充,批量in方法也在上述代碼里面。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色大片在线免费看 | 久久久新 | 日韩视频一区二区在线观看 | 视频一区 中文字幕 | 一级做受毛片免费大片 | 日本一区二区三区视频在线 | 久色免费| 91精品免费在线 | 国产精品视频二区不卡 | 久久午夜神器 | 成人羞羞视频在线观看 | 国产精品久久久久久久久久久久久久久 | 一色屋任你操 | 国产免费让你躁在线视频 | 九九看片| 亚洲视频在线观看免费 | 日韩.www| 成人福利在线视频 | 黄色av网站免费 | 色操网| 99精品视频免费看 | 成片免费大全 | 欧美精品黄色 | 免费一级特黄欧美大片勹久久网 | 国产免费一区视频 | 免费人成年短视频在线观看网站 | 91精品国 | 一区二区视频在线看 | 午夜在线观看视频网站 | 久久密| 空姐一级毛片 | 91社影院在线观看 | 久久精品久久久久 | 国产国语毛片 | 成人区一区二区 | 欧美极品欧美精品欧美视频 | 九九色在线观看 | 一级大黄毛片免费观看 | 亚洲成人免费影视 | 国产毛片自拍 | 久久国产精品99国产 |