java操作mongoDB
来源:互联网 发布:erp软件是什么 编辑:程序博客网 时间:2024/03/29 10:10
其实任何新的数据持久化的方式对于使用者都有两步 1创建连接 2管理数据
1.创建连接: 重要的是 Mongo对象 和 DB对象
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配置类 * */public class MongoDBConfig {private static Mongo mongo;private static DB db;//连接信息private static final String MONGO_DB_ADDRESS = "....";private static final int MONGO_DB_PORT = 1111;private static final String MONGO_DB_USERNAME = "...";private static final String MONGO_DB_PASSWORD = "...";private static final String MONGO_DB_DBNAME = "...";//连接信息文件存放位置private static final String MONGO_DB_RESOURCE_FILE = "mongodb.cfg.properties";/** * Mongo数据库参数 */private static Map<String, String> cfgMap = new HashMap<String, String>();/** * 数据库存储 DB对象 */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;}/** * 将连接参数 存储在cfgMap中 */@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");//根据地址 address 和 端口port获取mongo对象mongo = new Mongo(address, port);if (dbName != null && !"".equals(dbName)) {//根据mongo对象获取DB对象db = mongo.getDB(dbName);if (username != null && !"".equals(username)) {//验证身份db.authenticate(username, password.toCharArray());}//将DB对象存储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;}}
2.对数据进行操作 mongodb中每一条数据就是一个DBObject 所以操作起来也很简单 在操作某个表的数据时 必须先根据表明获取该表的对象
import java.util.ArrayList;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;/** * 基础的MongoDB操作类 */public class BaseMongoDB {private static Log logger = LogFactory.getLog(BaseMongoDB.class); /** * 获得Collection (表名) * * @param collectionNameCollection名称(表名称) * @return */public DBCollection getDBCollection(String collectionName) {logger.debug(MongoDBConfig.getDB().getCollection(collectionName));return MongoDBConfig.getDB().getCollection(collectionName);}/** * 添加对象到相应的Collection * * @param collectionNameCollection名称(表名称) * @param obj存储的数据对象 * @return */public DBObject insert(String collectionName, DBObject obj) {getDBCollection(collectionName).insert(obj);return obj;}/** * 批量添加数据到Collection中 * * @param collectionNameCollection的名称(集合名称) * @param objList数据的列表集合 */public void insertBatch(String collectionName, List<DBObject> objList) {if (null == objList || objList.isEmpty()) {return;}getDBCollection(collectionName).insert(objList);}/** * 删除实体 * * @param collectionNameCollection名称(表名) * @param obj对象 */public void delete(String collectionName, DBObject obj) {getDBCollection(collectionName).remove(obj);}/** * 查询 * @param collectionNameCollection名称(表名) * @param obj对象 * @return */public List<DBObject> find(String collectionName, DBObject obj) {logger.debug("FIND-->>>>>" + collectionName);DBCursor dbCursor = getDBCollection(collectionName).find(obj);return DBCursor2List(dbCursor);}/** * 查询并排序 * @param collectionNameCollection名称(表名) * @param query查询条件 * @param sort排序方式 * @return */public List<DBObject> find(String collectionName,DBObject query, DBObject sort) {DBCursor cur;if (query != null) {cur = getDBCollection(collectionName).find(query);} else {cur = getDBCollection(collectionName).find();}if (sort != null) {cur.sort(sort);}return DBCursor2List(cur);}/** * 查询 * @param collectionName集合名称 * @param query查询条件 * @param sort排序 * @param start页码 * @param limit分页大小 * @return */public List<DBObject> find(String collectionName,DBObject query, DBObject sort, int start,int limit) {DBCursor cur;if (query != null) {cur = getDBCollection(collectionName).find(query);} else {}if (sort != null) {cur.sort(sort);}if (start == 0) {cur.batchSize(limit);} else {cur.skip(start).limit(limit);}return DBCursor2List(cur);}/** * 将DB游标转换为List * @param cur游标 * @return */private List<DBObject> DBCursor2List(DBCursor cur) {List<DBObject> list = new ArrayList<DBObject>();if (cur != null) {list = cur.toArray();}return list;}}数据的操作类 基本完成了
- [mongodb]java操作mongodb
- [mongodb]java操作mongodb
- mongodb学习(java操作mongodb)
- mongodb初学-java操作mongodb
- mongoDB JAVA操作
- MongoDB,java操作
- Java 操作 MongoDB
- Java操作MongoDB
- mongoDB JAVA操作
- java操作mongodb实例
- Java操作MongoDB入门
- Java操作Mongodb
- Java操作MongoDB
- 使用Java操作Mongodb
- java 操作 mongodb
- Java操作MongoDB
- java操作mongodb
- java操作mongodb
- 软件设计的真谛
- uva 10341 - Solve It
- linux下多进程、多线程编程
- sqlserver 评估期已过
- 简单之美——系统设计黄金法则
- java操作mongoDB
- 配置使用虚拟用户登录的FTP服务器
- [Android]在游戏的SurfaceView中获取输入与使用EditText,Spinner等控件的方法
- asp.net 缓存
- DELPHI高性能大容量SOCKET并发(三):接收、发送、缓存
- xml Web Service
- 小知识
- openstack essex版安装(4)——swift
- richviewedit支持png