如何用spring集成mongodb实现文件上传

首先要把必要的mongoDB需要的jar加进项目中

定义mongoDB的bean

<bean id="mongoClient" class="com.mongodb.MongoClient">
	
		
		<constructor-arg index="0" type="java.lang.String" name="host" value="127.0.0.1" />					
		<constructor-arg index="1" type="int" name="port" value="27017" />
	</bean>
自定义实现mongodb增删改实体类

<bean id="mongoDB" class="com.test.MongoDB">
		<property name="mongoClient" ref="mongoClient" />
		<property name="dbName" value="orcl" />
	</bean>
定义mongoClient基础类


public class MongoDB {

	private MongoClient mongoClient;
	private String dbName;
	
	/**
	 * 获取名为dbName数据库
	 * 
	 * @return
	 */
	public DB getDB() {
		return mongoClient.getDB(dbName);
	}

	public MongoClient getMongoClient() {
		return mongoClient;
	}

	public void setMongoClient(MongoClient mongoClient) {
		this.mongoClient = mongoClient;
	}

	public String getDbName() {
		return dbName;
	}

	public void setDbName(String dbName) {
		this.dbName = dbName;
	}

}
定义mongodb操作Dao类

/**
	 * 增
	 * 
	 * @param bean
	 * @return
	 */
	public T save(T bean) {
		String beanJson = JsonUtil.getJSONString(bean);
		DBCollection collection = mongoDB.getDB().getCollection(clazz.getSimpleName());
		collection.save((DBObject)JSON.parse(beanJson));
		return bean;
	}

	/**
	 * 删
	 * @param id
	 */
	public void remove(String id) {
		DBCollection collection = mongoDB.getDB().getCollection(clazz.getSimpleName());
		BasicDBObject doc = new BasicDBObject();
		doc.put("_id", id);
		collection.remove(doc);
	}

	/**
	 * 改
	 * @param query
	 * @param newDoc
	 */
	public void update(BasicDBObject query, BasicDBObject newDoc) {
		DBCollection collection = mongoDB.getDB().getCollection(clazz.getSimpleName());
		collection.update(query, newDoc);
	}
定义保存文件类

/**
	 * 保存文件到MongoDB GridFS
	 * 
	 * @param in			- 需要保存文件的输入流
	 * @param id			- 需要保存文件的唯一ID
	 * @param fileName		- 需要保存文件的文件名
	 * @param contentType  - 需要保存文件的文件类型
	 * @param downloadName - 需要保存文件被下载时的文件名
	 */
	public void save(InputStream in, String id, String fileName, String contentType, String downloadName) {
		GridFS fs = new GridFS(mongoDB.getDB(), this.getClass().getSimpleName());
		GridFSInputFile fsFile = fs.createFile(in);
		fsFile.setId(id);
		fsFile.setFilename(fileName);
		fsFile.setContentType(contentType);
		fsFile.put("downloadName", downloadName);
		fsFile.save();
	}
	
	/**
	 * 从MongoDB GridFS文件系统中删除指定ID的文件
	 * 
	 * @param id
	 */
	public void remove(String id) {
		GridFS fs = new GridFS(mongoDB.getDB(), this.getClass().getSimpleName());
		BasicDBObject query = new BasicDBObject("_id", id);
		fs.remove(query);
	}
	
	/**
	 * 从MongoDB GridFS文件系统中批量删除指定ID的文件
	 * @param ids
	 */
	public void batchRemove(String... ids) {
		GridFS fs = new GridFS(mongoDB.getDB(), this.getClass().getSimpleName());
		for(String id : ids){
			BasicDBObject query = new BasicDBObject("_id", id);
			fs.remove(query);
		}
	}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值