23decxf 发表于 2018-10-27 09:56:09

[MongoDB学习日志]Java对MongoDB的CRUD操作

package com.im.dao;  
import java.io.File;
  
import java.io.IOException;
  
import java.io.InputStream;
  
import java.util.ArrayList;
  
import java.util.List;
  
import com.im.MongoFactory;
  
import com.im.SystemConstant;
  
import com.mongodb.BasicDBObject;
  
import com.mongodb.DB;
  
import com.mongodb.DBCollection;
  
import com.mongodb.DBCursor;
  
import com.mongodb.DBObject;
  
import com.mongodb.WriteResult;
  
import com.mongodb.gridfs.GridFS;
  
import com.mongodb.gridfs.GridFSDBFile;
  
import com.mongodb.gridfs.GridFSInputFile;

  
public>  /**
  * 数据库对象
  */
  private DB db;
  /**
  * 数据库文档对象(相当于RDBMS中的表)
  */
  private DBCollection dbCollection;
  /**
  * 数据库文件存在集合
  */
  private GridFS fs;
  public BaseDao(String docBucket, String fileBucket) {
  db = MongoFactory.getInstance().getMongo()
  .getDB(SystemConstant.Configure.DATABASE);
  this.dbCollection = db.getCollection(docBucket);
  if (fileBucket.endsWith("") || fileBucket == null) {
  fileBucket = "fs";
  }
  this.setFs(new GridFS(db, fileBucket));
  }
  /**
  * 插入文档
  *
  * @param jo
  * @return
  */
  public int insert(DBObject jo) {
  WriteResult wr = dbCollection.save(jo);
  return wr.getN();
  }
  /**
  * 删除文档
  *
  * @param jo
  *            删除的匹配文档
  */
  public void delete(DBObject jo) {
  dbCollection.remove(jo);
  }
  /**
  * 更新文档
  *
  * @param query
  *            指定更新的文档
  * @param jo
  *            更新后的文档
  * @return
  */
  public int update(DBObject query, DBObject jo) {
  WriteResult wr = dbCollection.update(query, jo);
  return wr.getN();
  }
  /**
  * 查询文档
  *
  * @param query
  *            查询的匹配文档
  * @return
  */
  public List query(DBObject query) {
  DBCursor dbc = dbCollection.find(query);
  List joList = new ArrayList();
  while (dbc.hasNext()) {
  DBObject jo = dbc.next();
  joList.add(jo);
  }
  return joList;
  }
  /**
  * 存储文件
  *
  * @param file
  */
  public void saveFile(File file) {
  try {
  GridFSInputFile gif = fs.createFile(file);
  gif.save();
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  /**
  * 存储输入流,并指定的一些描述信息
  *
  * @param in

  * @param>  * @param filename
  *            文件名
  * @param contentType
  *            文件内容类型
  */

  public void saveFile(InputStream in, Object>  Object contentType) {

  DBObject query = (DBObject) new BasicDBObject("_id",>  GridFSDBFile gff = fs.findOne(query);
  if (gff == null) {
  GridFSInputFile gif = fs.createFile(in);
  gif.setFilename(filename);

  gif.put("_id",>  gif.put("contentType", contentType);
  gif.save();
  }
  }
  /**
  * 查询指定ID的文件
  *

  * @param>  * @return
  */

  public GridFSDBFile queryFile(Object>
  DBObject query = (DBObject) new BasicDBObject("_id",>  return fs.findOne(query);
  }
  /**
  * 查询指定文件名的文件
  *
  * @param filename
  * @return
  */
  public GridFSDBFile queryFile(String filename) {
  DBObject query = (DBObject) new BasicDBObject("filename", filename);
  return fs.findOne(query);
  }
  /**
  * 查询文件
  *
  * @param query
  *            查询的匹配文件
  * @return
  */
  public List queryFile(DBObject query) {
  return fs.find(query);
  }
  /**
  * 统计查询结果数
  *
  * @param query
  *            查询匹配的文档
  * @return
  */
  public long getCount(DBObject query) {
  return dbCollection.getCount(query);
  }
  public GridFS getFs() {
  return fs;
  }
  public void setFs(GridFS fs) {
  this.fs = fs;
  }
  public DBCollection getDbCollection() {
  return dbCollection;
  }
  public void setDbCollection(DBCollection dbCollection) {
  this.dbCollection = dbCollection;
  }
  
}


页: [1]
查看完整版本: [MongoDB学习日志]Java对MongoDB的CRUD操作