由于需要用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*/@Overridepublic 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*/@Overridepublic 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();//批量查询,inif (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*/@Overridepublic 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*/@Overridepublic 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方法也在上述代码里面。

Java ——MongDB 插入数据、 模糊查询、in查询相关推荐

  1. Java动态插入数据到html模板并下载为html解决方案

    Java动态插入数据到html模板并导出html解决方案 需求 前端页面数据点击下载为一个html,还必须可以打开关闭表格,有颜色样式之类可复制的,所以canvas画成一个pdf导出显然是不行了: 目 ...

  2. SQL插入数据时连表查询(利用子查询一次性 insert 多条数据)

    标准说明: INSERT 语句中的 SELECT 子查询可用于将一个或多个表或视图中的值添加到另一个表中.使用 SELECT 子查询还可以同时插入多行. INSERT INTO 表名 as a (a. ...

  3. Java 批量插入数据到数据库(MySQL)中

    实现Java批量插入数据库数据: package Proxy;import java.io.BufferedReader; import java.io.File; import java.io.Fi ...

  4. java hibernate 插入数据_[Java教程]hibernate 返回新插入数据的Id

    [Java教程]hibernate 返回新插入数据的Id 0 2015-08-28 10:00:11 例如 表明 studentInfoString sql="set set nocount ...

  5. java mongodb 插入数据_mongoDB 插入数据 用java实现

    import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; impor ...

  6. oracle跨库插入数据,Oracle跨数据库查询并插入实现原理及代码

    工作中需要从一个数据库中的表GIS_WEICHAI_DATA_1S中的数据导入到另个一数据库的表GIS_WEICHAI_DATA_1S中,数据库服务器都是远程的!我的实现方法是在本地使用PL/SQL操 ...

  7. java mysql插入数据乱码_java向mysql数据库插入数据显示乱码的问题

    在做一个java web工程时,有时会碰到在向数据库添加数据库时,结果出现乱码"???"的问题.针对该问题的主要解决办法就是: 一.确保是否添加了字符集过滤器: 在java web ...

  8. java mysql插入数据乱码_java连接mysql插入数据出现中文乱码

    java连接了mysql数据库后,程序行向数据库中插入信息,代码如下: dbhelper boringdb = new dbhelper(); boringdb.connSQL(); String i ...

  9. java 获取插入数据的自增长id

    /*** * 这是插入一条数据的同时,获取该数据的则增长列的值(该例子的自增长列是id)* * @author LZL* */ public class Auto_Increment {private ...

最新文章

  1. c+和python哪个快-python比c更快
  2. 敏捷方法在测试计划中的应用
  3. 如何根据进程号去查端口号?
  4. 5行Python 代码就能让你的电脑永不息屏
  5. mac 上brew加速
  6. Grad-CAM 神经网络特征图可视化
  7. background-color:#e5eecc; border:solid 1px #c3c3c3;
  8. 让你浏览器飞起来的电脑插件合集
  9. 数据分析--PEG策略(选股)
  10. 不能登录Google账号
  11. 深入理解Flash Player的安全域(Security Domains)
  12. H5满屏彩色泡泡小特效(适合表白哦~做完发给让你每天想念的人吧~)
  13. session Asii码转换
  14. 米兔机器人恐龙拼图手册_MI 小米 米兔积木机器人 履带版
  15. Linux /dev/mapper/ubuntu--vg-ubuntu--lv 磁盘空间不足的问题
  16. 南卫理公会大学计算机科学,恭喜A同学获得南卫理公会大学计算机科学专业硕士通知书...
  17. 用 JS 进行 Base64 编码、解码
  18. python编程:使用pyecharts绘制拟合曲线图
  19. 正点原子LCD转接板与最小系统板的连接
  20. Linux系统中使用Nginx实现反向代理

热门文章

  1. NDK OpenGL ES 3.0 开发(十七):相机基础滤镜
  2. 小公司如何做项目管理(下)
  3. postman 成功,python requests 失败
  4. 【七】springboot整合redis(超详细)
  5. SelFlow: Self-Supervised Learning of Optical Flow
  6. 2003服务器远程控制,解析WIN2003 Server远程管理(Telnet方式)
  7. 为什么都劝运维转开发,却仍看到大批年轻人运维做的风生水起?
  8. 我在滴滴数据分析岗实习8个月的收获(文末附内推机会)
  9. 如何解决keilMDK提示头文件file not found
  10. mysql sql%rowcount_SQL%ROWCOUNT应用