由于需要用MongoDB缓存数据,所以自己写了一套公共的存放和读取方法
具体如下:
存放mongodb:
/**
* 公共方法:设置 类型缓存
* @author shijing
* @param param
* @param sysGuid
*/
public void setObjData(Map<String, > param, String sysGuid, String enumBpd){
DB db = new BasicDB ();
db .putAll(param);
String collectionName = EnumBpd.getBpdType(enumBpd) + sysGuid;
mongoDao.insertToCol(db ,collectionName);
}
/**
* 公共方法:设置List缓存
* @author shijing
* @param paramList
* @param sysGuid
*/
public void setListData(List<Map<String, >> paramList, String sysGuid, String enumBpd){
List<DB > list = new ArrayList<>();
if(CollectionUtils.isNotNull(paramList)){
for (Map<String, > param : paramList){
DB db = new BasicDB ();
db .putAll(param);
list.add(db );
}
}
String collectionName = EnumBpd.getBpdType(enumBpd) + sysGuid;
mongoDao.insertToCol(list,collectionName);
mongoDao里面的方法:
public void insertToCol(DB document, String collectionName) {
dropCol(collectionName);
DBCollection dbCollection = mongoTemplate.createCollection(collectionName);
dbCollection.insert(document);
}
public void insertToCol(List<DB > documents, String collectionName) {
dropCol(collectionName);
DBCollection dbCollection = mongoTemplate.createCollection(collectionName);
dbCollection.insert(documents);
}
读取方法
/**
* 通过关键字模糊查询问题和答案库
* @param param
* @return
*/
@Override
public List<Map<String, >> searchQuestionAndAnswerByKeyword(Map<String, > param) {
List<Map<String, >> searchList = new ArrayList<>();
Map<String, > 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);
BasicDB query= new BasicDB ();
//模糊查询的字段设置
query.put(\"page_html\", Pattern.compile((String) param.get(\"keyword\")));
DBCursor dbCursor = mongoDao.findAll(query,collectionName);
List<DB > list = dbCursor.toArray();
for (DB db : list){
searchList.add(db .toMap());
}
//模糊查到的数据进行组装
return getQuestionAndAnswerList(searchList);
}
/**
* 公共方法:批量—— in方法查询List数据
* @author shijing
* @param ids id集合
* @param paramMap 其他参数
* @param columnName in字段列名
* @param collectionName 表名
* @return
*/
@Override
public List<Map<String, >> batchSearchPageListByIds(List<String> ids, Map<String,
> paramMap, String columnName, String collectionName) {
List<Map<String, >> searchList = new ArrayList<>();
BasicDB query= new BasicDB ();
//批量查询,in
if (CollectionUtils.isNotEmpty(ids)){
BasicDBList values = new BasicDBList();
values.addAll(ids);
query.put(columnName, new BasicDB (\"$in\",values));
}
//拼接参数
if(MapUtils.isNotEmpty(paramMap)){
for (String mapKey: paramMap.keySet()){
query.put(mapKey, paramMap.get(mapKey));
}
}
DBCursor dbCursor = mongoDao.findAll(query,collectionName);
List<DB > list = dbCursor.toArray();
if (dbCursor!=null && dbCursor.size()>0){
for (DB db : list){
searchList.add(db .toMap());
}
}
return searchList;
}
/**
* 公共方法:通过参数获取List数据
* @author shijing
* @param paramMap 参数
* @param collectionName 表名
* @return
*/
@Override
public List<Map<String, >> getListByParam(Map<String, > paramMap,String collectionName){
List<Map<String, >> searchList = new ArrayList<>();
BasicDB query= new BasicDB ();
//拼接参数
if(MapUtils.isNotEmpty(paramMap)){
for (String mapKey: paramMap.keySet()){
query.put(mapKey, paramMap.get(mapKey));
}
}
DBCursor dbCursor = mongoDao.findAll(query,collectionName);
List<DB > list = dbCursor.toArray();
if (dbCursor!=null && dbCursor.size()>0){
for (DB db : list){
searchList.add(db .toMap());
}
}
return searchList;
}
/**
* 公共方法:通过参数获取 数据
* @author shijing
* @param paramMap
* @param collectionName 表名
* @return
*/
@Override
public Map<String, > get ByParam(Map<String, > paramMap, String collectionName) {
Map<String, > webSiteInfo = new HashMap<>();
BasicDB query= new BasicDB ();
//拼接参数
if(MapUtils.isNotEmpty(paramMap)){
for (String mapKey: paramMap.keySet()){
query.put(mapKey, paramMap.get(mapKey));
}
}
DB db = mongoDao.findOne(query,collectionName);
if(db !=null){
return db .toMap();
}
return webSiteInfo;
}
注意事项:
mongodb模糊查询时
Pattern pattern = Pattern.compile(\"^.*\" + param.get(\"keyword\") +\".*$\"
这种方式存在bug, 容易漏掉数据
应该使用下面这种方式:
query.put(\"page_html\", Pattern.compile((String) param.get(\"keyword\")));
先记录到这吧,有需要在补充,批量in方法也在上述代码里面。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
继续阅读与本文标签相同的文章
上一篇 :
利用显著-偏置卷积神经网络处理混频时间序列
下一篇 :
Android图片压缩的几种方案
-
[译] 编写可以复用的 HTML 模板
2026-05-19栏目: 教程
-
项目的自述文档(README)模板
2026-05-19栏目: 教程
-
[Spring Cloud Tutorial翻译系列二]Spring Cloud Config Server与git集成
2026-05-19栏目: 教程
-
[译] 在 iOS Swift 中的懒加载变量
2026-05-19栏目: 教程
-
[译] 手摸手教你如何轻松发布私有 App
2026-05-19栏目: 教程
