MongoDB是一个文档型数据库,是NOSQL家族中最重要的成员之一,以下代码封装了MongoDB的基本操作。
MongoDBConfig.java
package com.posoftframework.mongodb; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Enumeration; import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.Properties; import com.mongodb.DB; import com.mongodb.Mongo; /** * MongoDB配置类 * * @author yongtree * @date 2010-7-7 下午07:45:08 * @version 1.0 */ public class MongoDBConfig { private static Mongo mongo; private static DB db; private static final String MONGO_DB_ADDRESS = "localhost"; private static final int MONGO_DB_PORT = 27017; private static final String MONGO_DB_USERNAME = "root"; private static final String MONGO_DB_PASSWORD = "root"; private static final String MONGO_DB_DBNAME = "mongodb"; private static final String MONGO_DB_RESOURCE_FILE = "mongodb.cfg.properties"; /** * Mongo数据库参数 */ private static Map<String, String> cfgMap = new HashMap<String, String>(); private static Hashtable<String, DB> mongoDBs = new Hashtable<String, DB>(); /** * 初始化Mongo的数据库 */ static { init(); } public static File getConfigFile() { String path = MongoDBConfig.class.getResource("/").getPath(); String fileName = path + MONGO_DB_RESOURCE_FILE; File file = new File(fileName); if (file.exists()) { return file; } return null; } @SuppressWarnings("unchecked") private static void initCfgMap() { File file = getConfigFile(); if (file != null) { Properties p = new Properties(); try { p.load(new FileInputStream(file)); for (Enumeration enu = p.propertyNames(); enu.hasMoreElements();) { String key = (String) enu.nextElement(); String value = (String) p.getProperty(key); cfgMap.put(key, value); } } catch (IOException e) { System.out.println("记载Mongo配置文件失败!"); e.printStackTrace(); } } else { cfgMap.put("mongo.db.address", MONGO_DB_ADDRESS); cfgMap.put("mongo.db.port", String.valueOf(MONGO_DB_PORT)); cfgMap.put("mongo.db.username", MONGO_DB_USERNAME); cfgMap.put("mongo.db.password", MONGO_DB_PASSWORD); cfgMap.put("mongo.db.dbname", MONGO_DB_DBNAME); } } /** * 初始化Mongo数据库 */ private static void init() { initCfgMap(); try { String address = cfgMap.get("mongo.db.address"); int port = Integer.parseInt(cfgMap.get("mongo.db.port").toString()); String dbName = cfgMap.get("mongo.db.dbname"); String username = cfgMap.get("mongo.db.username"); String password = cfgMap.get("mongo.db.password"); mongo = new Mongo(address, port); if (dbName != null && !"".equals(dbName)) { db = mongo.getDB(dbName); if (username != null && !"".equals(username)) { db.addUser(username, password.toCharArray()); } mongoDBs.put(dbName, db); } } catch (IOException e) { e.printStackTrace(); } } /** * 得到Mongo的实例 * * @return */ public static Mongo getMongo() { return mongo; } /** * 得到Mongo的图片数据库 * * @return */ public static DB getDB() { return db; } public static List<String> getDBNames() { return mongo.getDatabaseNames(); } /** * 根据数据库名称,得到数据库<br/> * 如果不存在,则创建一个该名称的数据库,并设置用户名和密码为配置文件中的参数值</br> * * @param dbName * @return */ public static DB getDBByName(String dbName) { DB db = mongo.getDB(dbName); if (!mongoDBs.contains(db)) { db.addUser(cfgMap.get("mongo.db.username"), cfgMap.get( "mongo.db.password").toCharArray()); mongoDBs.put(dbName, db); } return db; } }
MongoService.java
/************************* 版权声明 ********************************* * * * 版权所有:百洋软件 * * Copyright (c) 2010 by www.po-soft.com * * * ************************* 变更记录 ********************************* * * 创建者:yongtree 创建日期: 2010-7-7 * 备注: * * 修改者: 修改日期: * 备注: * */ package com.posoftframework.mongodb; import java.util.List; import java.util.Map; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; /** * 操作MongoDB的DAO接口 * * @author yongtree * @date 2010-7-7 下午04:44:43 * @version 1.0 */ public interface MongoService { public abstract DBCollection getCollection(); /** * 根据数据集合的Map,插入数据 map的key对应数据库中的DBCollection的key值 * * @param obj */ public abstract DBObject insert(DBObject obj); /** * 根据List<Map<String,Object结构的数据集合,插入数据 * * @param list */ public abstract void insertBatch(List<DBObject> list); /** * 按照条件参数集合map,删除数据 * * @param map */ public abstract void delete(DBObject obj); /** * 按照多种条件的并集,批量删除数据 * * @param list */ public abstract void deleteBatch(List<DBObject> list); /** * 得到Collection()总的记录数 * * @return */ public abstract long getCollectionCount(); public abstract long getCount(DBObject query); public abstract List<DBObject> find(DBObject query); public abstract List<DBObject> find(DBObject query,DBObject sort); public abstract List<DBObject> find(DBObject query,DBObject sort,int start,int limit); /** * 根据whereFields参数,更新setFields值 * * @param setFields * @param whereFields */ public abstract void update(DBObject setFields, DBObject whereFields); public abstract List<DBObject> findAll(); /** * 根据ID找到唯一数据 有1个id字段标记 * * @param id * @return */ public abstract DBObject getById(String id); /** * 获取所有数据库名称 * * @return */ public List<String> getAllDBNames(); public abstract String getDbName(); public abstract void setDbName(String dbName); public abstract DB getDb(); public abstract String getCollName(); public abstract void setCollName(String collName); }
MongoServiceImpl.java
/************************* 版权声明 ********************************* * * * 版权所有:百洋软件 * * Copyright (c) 2010 by www.po-soft.com * * * ************************* 变更记录 ********************************* * * 创建者:yongtree 创建日期: 2010-7-7 * 备注: * * 修改者: 修改日期: * 备注: * */ package com.posoftframework.mongodb; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.bson.types.ObjectId; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; /** * * @author yongtree * @date 2010-7-7 下午07:22:15 * @version 1.0 */ public class MongoServiceImpl implements MongoService { private String dbName; private String collName; private DB db; public MongoServiceImpl(String dbName, String collName) { this.dbName = dbName; this.collName = collName; try { db = MongoDBConfig.getDBByName(this.dbName); } catch (Throwable e) { e.printStackTrace(); } } public MongoServiceImpl() { getDb(); } public DBCollection getCollection() { return db.getCollection(this.collName); } public DBObject map2Obj(Map<String, Object> map) { DBObject obj = new BasicDBObject(); if (map.containsKey("class") && map.get("class") instanceof Class) map.remove("class"); obj.putAll(map); return obj; } public DBObject insert(DBObject obj) { getCollection().insert(obj); return obj; } public void insertBatch(List<DBObject> list) { if (list == null || list.isEmpty()) { return; } List<DBObject> listDB = new ArrayList<DBObject>(); for (int i = 0; i < list.size(); i++) { listDB.add(list.get(i)); } getCollection().insert(listDB); } public void delete(DBObject obj) { getCollection().remove(obj); } public void deleteBatch(List<DBObject> list) { if (list == null || list.isEmpty()) { return; } for (int i = 0; i < list.size(); i++) { getCollection().remove(list.get(i)); } } public long getCollectionCount() { return getCollection().getCount(); } public long getCount(DBObject obj) { if (obj != null) return getCollection().getCount(obj); return getCollectionCount(); } public List<DBObject> find(DBObject obj) { DBCursor cur = getCollection().find(obj); return DBCursor2list(cur); } @Override public List<DBObject> find(DBObject query, DBObject sort) { DBCursor cur; if (query != null) { cur = getCollection().find(query); } else { cur = getCollection().find(); } if (sort != null) { cur.sort(sort); } return DBCursor2list(cur); } @Override public List<DBObject> find(DBObject query, DBObject sort, int start, int limit) { DBCursor cur; if (query != null) { cur = getCollection().find(query); } else { cur = getCollection().find(); } if (sort != null) { cur.sort(sort); } if (start == 0) { cur.batchSize(limit); } else { cur.skip(start).limit(limit); } return DBCursor2list(cur); } private List<DBObject> DBCursor2list(DBCursor cur) { List<DBObject> list = new ArrayList<DBObject>(); if (cur != null) { list = cur.toArray(); } return list; } public void update(DBObject setFields, DBObject whereFields) { getCollection().updateMulti(setFields, whereFields); } public List<DBObject> findAll() { DBCursor cur = getCollection().find(); List<DBObject> list = new ArrayList<DBObject>(); if (cur != null) { list = cur.toArray(); } return list; } public DBObject getById(String id) { DBObject obj = new BasicDBObject(); obj.put("_id", new ObjectId(id)); DBObject result = getCollection().findOne(obj); return result; } public String getDbName() { return dbName; } public void setDbName(String dbName) { this.dbName = dbName; this.db = MongoDBConfig.getDBByName(this.dbName); } public String getCollName() { return collName; } public void setCollName(String collName) { this.collName = collName; } public DB getDb() { if (this.db == null) { if (this.dbName == null) { this.db = MongoDBConfig.getDB(); } else { this.db = MongoDBConfig.getDBByName(this.dbName); } } return this.db; } public List<String> getAllDBNames() { return MongoDBConfig.getDBNames(); } }
标签:
Java,MongoDB
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“Java操作MongoDB数据库示例分享”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月05日
2024年11月05日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]