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.htabc.com
暂无“Java操作MongoDB数据库示例分享”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年12月22日
2024年12月22日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]