MongoDB的Java操作方式

 Maven引入驱动:

 <dependency>
     <groupId>org.mongodb</groupId>
     <artifactId>mongo-java-driver</artifactId>
     <version>2.13.0</version>
 </dependency>

 获取数据库连接:

     1、旧的方式,已作废:

 /* Mongo 已不建议使用 */
 Mongo mongo = new Mongo(host, port);
 DB db = mongo.getDB(dbName);
 /* authenticate 方法已不建议使用 */
 db.authenticate(username, password);
 DBCollection c = db.getCollection(collectionName);

     2、新的方式:

 /* 服务器地址 */
 ServerAddress address = new ServerAddress(host, port);
 /* 权限认证列表 */
 MongoCredential credential = MongoCredential.createCredential(username, dbName, password);
 List<MongoCredential> list = new ArrayList<MongoCredential>(1);
 list.add(credential);
 /* 客户端 */ 
 MongoClient client = new MongoClient(address, list);
 DB db = client.getDB(dbName);
 DBCollection c = db.getCollection(collectionName);

 简单增删改查操作:

     1、查询

 /* 查询对象 */
 DBObject query = new BasicDBObject();
 query.put(key, value);

 /* 查询 */
 DBCursor cur = c.find(query);
 while(cur.hasNext()){
     DBObject o = cur.next();
 }

 /* 查询一条 */
 DBObject obj = c.findOne(query);

 /* 查询数量 */
 long count = c.count(query);

     2、增改删

 /* 更新对象 */
 DBObject obj = new BasicDBObject();
 obj.put(key, value);
 
 /* 查询对象 */
 DBObject query = new BasicDBObject();
 query.put(key, value);
 
 /* 保存 */
 c.save(obj);
 /* 插入 */
 c.insert(obj);
 /* 更新 */
 c.update(qusery, obj);
 /* 删除 */
 c.remove(qusery);

 DBObject对象的通用处理方式:

    主要有两种方式:

         1、转换成 Json字符串,再转成对象。(推荐,现成的工具比较多,比如 Gson、Jackson、FastJson。个人习惯用 Gson,功能比较全,对泛型支持也好)

         2、自己写反射处理。(这个考虑的要比较多,想通用型好的话各种类型都有考虑,比较容易出bug,不建议用) 

      Json转换的方式:

 /** gson对象 */
 private static Gson gson = new Gson();

 /**
  * 普通对象转换为DBObject对象
  * 
  * @param obj 普通对象
  * @return DBObject对象
  */
 public static DBObject toDBObject(Object obj) {
     return gson.fromJson(gson.toJson(obj), BasicDBObject.class);
 }

 /**
  * DBObject对象转换为普通对象
  * 
  * @param obj DBObject对象
  * @param clas 返回类型
  * @return 普通对象
  */
 public static <T> T fromDBObject(DBObject obj, Class<T> clas) {
     return gson.fromJson(gson.toJson(obj), clas);
 }

 /**
  * DBCursor对象转换为普通对象集合
  * 
  * @param cur DBCursor对象
  * @param clas 返回类型
  * @return 普通对象集合
  */
 public static <T> List<T> fromDBCursor(DBCursor cur, Class<T> clas) {
     List<T> l = new LinkedList<T>();
     while (cur.hasNext())
         l.add(fromDBObject(cur.next(), clas));
     return l;
 }

     反射的方式:后续补充

 复杂的增删改查操作:后续补充

你可能感兴趣的:(mongodb)