您好,登錄后才能下訂單哦!
由于需要用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)鍵字模糊查詢問題和答案庫(kù) * @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ù)進(jìn)行組裝 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; }
注意事項(xiàng):
mongodb模糊查詢時(shí)
Pattern pattern = Pattern.compile("^.*" + param.get("keyword") +".*$"
這種方式存在bug, 容易漏掉數(shù)據(jù)
應(yīng)該使用下面這種方式:
query.put("page_html", Pattern.compile((String) param.get("keyword")));
先記錄到這吧,有需要在補(bǔ)充,批量in方法也在上述代碼里面。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。