亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

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

2024-07-14 08:43:04
字體:
來源:轉載
供稿:網友

由于需要用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方法也在上述代碼里面。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩有码| 日韩成人在线视频网站| 中文字幕精品在线| 在线看福利67194| 精品久久久久人成| 国产91精品久久久久久| 欧美激情aaaa| 播播国产欧美激情| 成人久久久久爱| 亚洲色图美腿丝袜| 国产欧美日韩免费看aⅴ视频| 中文字幕日韩高清| 日韩av不卡电影| 亚州欧美日韩中文视频| 日产精品久久久一区二区福利| 亚洲精品久久久久久久久久久| 欧美一级bbbbb性bbbb喷潮片| 亚洲国产精品推荐| 国产精品女人久久久久久| 亚洲成人在线网| 丝袜亚洲另类欧美重口| 亚洲资源在线看| 日韩中文在线观看| 欧美电影在线观看| 久久69精品久久久久久国产越南| 日韩av在线导航| 欧美在线视频在线播放完整版免费观看| 亚洲激情第一页| 欧美天堂在线观看| 欧美自拍视频在线观看| 国产视频久久久久久久| 日韩成人在线免费观看| 久久精品中文字幕一区| 91av在线国产| 精品国产一区二区三区四区在线观看| 中文字幕久热精品在线视频| 国产欧美中文字幕| 国产精品私拍pans大尺度在线| 俺也去精品视频在线观看| 午夜精品久久久久久久男人的天堂| 亚洲免费一级电影| 亚洲japanese制服美女| 国产成人在线视频| 18一19gay欧美视频网站| 成人av资源在线播放| 久久成人在线视频| 日韩在线视频免费观看| 日韩一区av在线| 国产精品大片wwwwww| 日韩大陆欧美高清视频区| 成人a视频在线观看| 午夜欧美大片免费观看| xxxx性欧美| 欧美亚洲伦理www| 欧美精品久久久久| 精品久久久香蕉免费精品视频| 日韩欧美高清在线视频| 国产精品视频专区| 一区二区av在线| 97成人精品视频在线观看| 欧美日韩激情视频8区| 国产精品久久久久久av| 久久精品视频99| 中文字幕久精品免费视频| 亚洲激情第一页| 日韩综合中文字幕| 色婷婷av一区二区三区在线观看| 久久精品国产视频| 97香蕉超级碰碰久久免费的优势| 亚洲男女自偷自拍图片另类| 亚洲人成电影在线观看天堂色| 亚洲激情久久久| 亚洲一区二区三区视频| 国产精品日本精品| 伊人久久久久久久久久久| 久久天堂av综合合色| 国产激情视频一区| 亚洲999一在线观看www| 久久av.com| 美日韩在线视频| 欧美午夜精品在线| 日韩精品免费在线| 97婷婷大伊香蕉精品视频| 久久九九国产精品怡红院| 97精品一区二区视频在线观看| 国内精品久久久久久久| 久久久国产一区二区| 2019中文字幕在线| 欧美精品videos| 97涩涩爰在线观看亚洲| 亚洲精品综合久久中文字幕| 日本精品中文字幕| 亚洲欧美在线x视频| 日韩麻豆第一页| 国产69精品久久久久99| 久久久国产一区二区三区| 亚洲成avwww人| 91久久久久久久| 国产成人午夜视频网址| 欧美电影免费观看电视剧大全| 亚洲一区中文字幕| 少妇高潮久久久久久潘金莲| 亚洲精品视频播放| 亚洲精品电影网在线观看| 久久影视电视剧凤归四时歌| 亚洲精品久久久久中文字幕二区| 日韩福利伦理影院免费| 国产精品jizz在线观看麻豆| 国产亚洲一区二区精品| 国产精品网址在线| 欧美日韩国产成人在线观看| 国产欧美亚洲精品| 欧美日韩性视频| 国产精品久久久久久中文字| 国产丝袜一区二区| 日本中文字幕不卡免费| 日韩视频―中文字幕| 中文字幕9999| 久久久久久久久久久亚洲| 在线观看日韩专区| 欧美黑人国产人伦爽爽爽| 国产精品久久婷婷六月丁香| 高潮白浆女日韩av免费看| 日韩在线免费高清视频| 国产999精品视频| 欧美在线激情视频| 久久久久北条麻妃免费看| 日韩经典中文字幕| 亚洲尤物视频网| 亚洲精品视频在线观看视频| 亚洲日本欧美中文幕| 久久99国产精品久久久久久久久| 亚洲最大福利视频网站| 日韩av电影手机在线观看| 国外成人在线视频| 大量国产精品视频| 亚洲精品永久免费| 高清欧美性猛交xxxx| 欧美日韩国产精品一区二区三区四区| 亚洲精品视频免费在线观看| 欧美在线国产精品| 夜夜狂射影院欧美极品| 欧美精品免费在线观看| 7777kkkk成人观看| 亚洲国产精品一区二区久| 国产91色在线|| 色哟哟亚洲精品一区二区| 国产z一区二区三区| 国产精品女人久久久久久| 欧美精品亚州精品| 91亚洲精品久久久久久久久久久久| 日韩欧美国产免费播放| 91av在线视频观看| 情事1991在线| 久久久久久久国产精品| 在线亚洲国产精品网| 成人在线免费观看视视频| 国产精品对白刺激| 久久精品国产91精品亚洲| 国产精品三级网站| 51精品国产黑色丝袜高跟鞋| 久久久久久欧美| 欧美成人免费大片| 一区二区成人av|