亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java操作MongoDB插入數據進行模糊查詢與in查詢功能

發布時間:2020-09-27 12:33:41 來源:腳本之家 閱讀:416 作者:執筆記憶的空白 欄目:編程語言

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

具體如下:

存放mongodb:

/**
   * 公共方法:設置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);
  }
  /**
   * 公共方法:設置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);
  }

讀取方法

/**
   * 通過關鍵字模糊查詢問題和答案庫
   * @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;
    //注釋里面這種方式雖然能模糊查詢,但是容易漏掉數據,切記切記!!!
    //Pattern pattern = Pattern.compile("^.*" + param.get("keyword") +".*$", Pattern.CASE_INSENSITIVE);
    BasicDBObject query= new BasicDBObject();
    //模糊查詢的字段設置
    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());
    }
    //模糊查到的數據進行組裝
    return getQuestionAndAnswerList(searchList);
  }
  /**
   * 公共方法:批量—— in方法查詢List數據
   * @author shijing
   * @param ids id集合
   * @param paramMap 其他參數
   * @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));
    }
    //拼接參數
    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;
  }
  /**
   * 公共方法:通過參數獲取List數據
   * @author shijing
   * @param paramMap 參數
   * @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();
    //拼接參數
    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;
  }
  /**
   * 公共方法:通過參數獲取Object數據
   * @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();
    //拼接參數
    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, 容易漏掉數據

應該使用下面這種方式:

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凉山| 绥棱县| 桃园市| 佛坪县| 华阴市| 梁河县| 黄冈市| 德惠市| 巧家县| 康保县| 土默特右旗| 出国| 武宣县| 邢台市| 康平县| 滁州市| 时尚| 雅江县| 措美县| 龙山县| 浮山县| 新疆| 阿城市| 巴彦淖尔市| 伊春市| 咸宁市| 岳阳县| 邮箱| 灌云县| 浙江省| 白沙| 山东| 象山县| 太湖县| 铁岭市| 林西县| 绥江县| 沧源| 太湖县| 阳西县| 神池县|