代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
Java MongoDB封装
作者:
金马超
/ 发布于
2015/8/3
/
668
驱动包版本最高是2.10.1 2.10.1以上版本中删除了ObjectId.massageToObjectId(key); 这个方法, 所以最高是2.10.1. 可以在 http://search.maven.org/ 中找到这个版本 配置文件只需在classpath下即可,名字任取,传参数即可.
package com.liloo.db; import java.util.ArrayList; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; import org.apache.log4j.Logger; import org.bson.types.ObjectId; import com.liloo.util.SystemMessage; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; /** * @作者 Liloo * @E-mail liloo@vip.qq.com * @时间 2015年5月14日 * @版权 © Liloo 版权所有. */ public class MongoManager { private static Logger log = Logger.getLogger(MongoManager.class); private static final MongoManager instance = new MongoManager(); private static MongoClient mongo = null; private static final String host = SystemMessage.getString("systemConstant", "mongo_host"); private static final Integer port = Integer.valueOf(SystemMessage.getString("systemConstant", "mongo_port")); /** * 私有化 */ private MongoManager() { } /** * 单例 * @return */ public static MongoManager getInstance() { return instance; } /** * 初始化MongoDB */ public void init() { try { mongo = new MongoClient(host, port); log.info("MongoDB init success!"); } catch (Exception e) { e.printStackTrace(); } } /** * 获取DB对象 * @return */ public DB getDB() { try { if (mongo == null) { init(); log.debug("Get DB : " + SystemMessage.getString("systemConstant", "DB_name")); } return mongo.getDB(SystemMessage.getString("systemConstant", "DB_name")); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 获取集合对象 * @param name * @return */ private DBCollection getCollection(String name) { try { return getDB().getCollection(name); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 插入MongoDB * @param name * @param obj */ public void insert(String name, DBObject obj) { try { long begin = System.currentTimeMillis(); getCollection(name).insert(obj); long end = System.currentTimeMillis(); log.debug("Insert Complete! Cost " + (end - begin) + "/ms"); } catch (Exception e) { e.printStackTrace(); } } /** * 删除指定条件的数据 * @param name * @param obj */ public void delete(String name, DBObject obj) { try { getCollection(name).remove(obj); } catch (Exception e) { e.printStackTrace(); } } /** * 清空集合 * @param collection * @throws Exception */ public void deleteAll(String collection) { try { List<DBObject> rs = findAll(collection); if (rs != null && !rs.isEmpty()) { for (int i = 0; i < rs.size(); i++) { getCollection(collection).remove(rs.get(i)); } } } catch (Exception e) { e.printStackTrace(); } } /** * 如果更新的数据 不存在 插入一条数据 * @param collection * @param setFields * @param whereFields */ public void updateOrInsert(String name, DBObject set, DBObject where) { try { getCollection(name).update(where, set, true, false); } catch (Exception e) { e.printStackTrace(); } } /** * 只更新存在的数据,不会新增. 批量更新. * @param name * @param setFields * @param whereFields */ public void updateExistDataWithBatch(String name, DBObject set, DBObject where) { try { getCollection(name).update(where, new BasicDBObject("$set", set), false, true); } catch (Exception e) { e.printStackTrace(); } } /** * 按照ObjectId,批量更新. * 因massageToObjectId()删除,所以MongoDB驱动包版本最高为2.10.1(含) * 2.10.1以上版本无此方法,故需要自行确定ObjectId. * 待有时间找到该方法的替代方法. * @param name * @param ids * @param set */ public void updateBatchByObjectId(String name, String ids, DBObject set) { try { if (ids == null || ids == "") return; String[] id = ids.split(","); for (int i = 0; i < id.length; i++) { BasicDBObject dest = new BasicDBObject(); BasicDBObject doc = new BasicDBObject(); dest.put("_id", ObjectId.massageToObjectId(id[i])); doc.put("$set", set); getCollection(name).update(dest, doc, false, true); } } catch (Exception e) { e.printStackTrace(); } } /** * 查询全部 * @param name * @return */ public List<DBObject> findAll(String name) { try { return getCollection(name).find().toArray(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 查询1条记录 * @param name * @param obj * @return */ public DBObject findOne(String name, DBObject obj) { try { DBCollection coll = getCollection(name); return coll.findOne(obj); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 查询指定条数的记录 * @param name * @param obj * @param limit * @return */ public List<DBObject> find(String name, DBObject obj, int limit) { try { DBCollection coll = getCollection(name); DBCursor c = coll.find(obj).limit(limit); if (c != null){ List<DBObject> list = new ArrayList<DBObject>(); list = c.toArray(); return list; } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 查询符合的全部数据 * @param name * @param where * @return */ public List<DBObject> find(String name, DBObject where) { try { DBCursor c = getCollection(name).find(where); if (c != null) { List<DBObject> list = new ArrayList<DBObject>(); list = c.toArray(); return list; } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 返回Queue的查询 * @param name * @param where * @return * @throws Exception */ public LinkedBlockingQueue<DBObject> findQueue(String name, DBObject where) { try { LinkedBlockingQueue<DBObject> queue = new LinkedBlockingQueue<DBObject>(); DBCursor c = getCollection(name).find(where); if (c != null) { for (DBObject obj : c) { obj = c.next(); queue.offer(obj); } return queue; } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 关闭Mongo链接 */ public void close() { try { if (mongo != null) { mongo.close(); log.info("MongoClient has benn closed..."); } } catch (Exception e) { e.printStackTrace(); } } } SystemMessage.java package com.liloo.util; import java.util.MissingResourceException; import java.util.ResourceBundle; /** * 获取配置文件参数 * @作者 Liloo * @E-mail liloo@liloo.top * @时间 2015年7月29日 * @版权 © Liloo 版权所有. */ public class SystemMessage { private SystemMessage() { } /** * 从配置文件获取参数 * @param bundle_name * @param key * @return */ public static String getString(String bundle_name,String key) { try { return ResourceBundle.getBundle(bundle_name).getString(key); } catch (MissingResourceException e) { return '!' + key + '!'; } } }
试试其它关键字
MongoDB
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
金马超
贡献的其它代码
(
3
)
.
SQL创建拼接工具
.
获取配置文件信息
.
Java MongoDB封装
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3