1. 程式人生 > >MongoDB與Java的整合

MongoDB與Java的整合

public class VisitBannerDao {

	MongoDBDao client = new MongoDBDao();

	@SuppressWarnings("deprecation")
	public List<VisitBanner> findList(VisitBanner visitBanner, PageModel pageModel) {
		// 指定資料庫名
		DB db = client.getConnection().getDB("databaseName");
		// 獲取集合,不存在的話,會自動建立該集合(相當於關係資料庫中的資料表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作資料庫
		List<VisitBanner> list = new ArrayList<VisitBanner>();
		try {
			// 條件列表
			BasicDBList condList = new BasicDBList();
			// 臨時條件物件
			BasicDBObject cond = new BasicDBObject();
			if (!StringUtils.isEmpty(visitBanner.getAppId())) {
				cond.append("appId", visitBanner.getAppId());// 此處意味appId這個欄位等於visitBanner.getAppId()這個值
				condList.add(cond);
			}
			if (!StringUtils.isEmpty(visitBanner.getStartDate())) {
				BasicDBObject startCondition = new BasicDBObject("$gte", visitBanner.getStartDate());
				cond = new BasicDBObject("insertDate", startCondition);// 此處意味insertDate大於等於visitBanner.getStartDate()這個值
				condList.add(cond);
			}
			if (!StringUtils.isEmpty(visitBanner.getEndDate())) {
				BasicDBObject endCondition = new BasicDBObject("$lte", visitBanner.getEndDate());
				cond = new BasicDBObject("insertDate", endCondition);
				condList.add(cond);
			}

			// 整合條件查詢
			BasicDBObject searchCond = new BasicDBObject();
			searchCond.put("$and", condList);// 將條件列表中的條件用and連線起來
			DBCursor cursor = null;
			BasicDBObject orderBy = new BasicDBObject("insertDate", -1);// 排序條件(1:ASC,-1:DESC)
			if (condList.size() != 0) {
				cursor = collection.find(searchCond).sort(orderBy);// 查詢資料庫
			} else {
				cursor = collection.find().sort(orderBy);
			}

			while (cursor.hasNext()) {// 將資料庫中查詢的cursor轉換成物件
				DBObject obj = cursor.next();
				// 反轉
				Gson gson = new Gson();
				VisitBanner entity = gson.fromJson(obj.toString(), VisitBanner.class);
				list.add(entity);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完後必須要close釋放資源
			client.close();
		}
		return list;
	}

	public void save(VisitBanner visitBanner) {
		// 指定資料庫名
		DB db = client.getConnection().getDB("datebaseName");
		// 獲取集合,不存在的話,會自動建立該集合(相當於關係資料庫中的資料表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作資料庫
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String time = sdf.format(new Date());
			visitBanner.setInsertDate(time);

			Gson gson = new Gson();
			// 轉換成json字串,再轉換成DBObject物件
			DBObject dbObject = (DBObject) JSON.parse(gson.toJson(visitBanner));
			// 插入資料庫
			collection.insert(dbObject);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完後必須要close釋放資源
			client.close();
		}
	}
	
	@Test
	public void update() {
		// 指定資料庫名
		DB db = client.getConnection().getDB("databaseName");
		// 獲取集合,不存在的話,會自動建立該集合(相當於關係資料庫中的資料表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作資料庫
		try {

			VisitBanner oldbanner=new VisitBanner();
			oldbanner.setBannerTitle("雨天");
			
			VisitBanner newbanner=new VisitBanner();
			newbanner.setBannerTitle("晴天");
			
			Gson gson = new Gson();
			// 轉換成json字串,再轉換成DBObject物件
			DBObject query = (DBObject) JSON.parse(gson.toJson(oldbanner));
			DBObject update = (DBObject) JSON.parse(gson.toJson(newbanner));
			// 插入資料庫
			collection.update(query, update);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完後必須要close釋放資源
			client.close();
		}
	}
	
	@Test
	public void delete() {
		// 指定資料庫名
		DB db = client.getConnection().getDB("databaseName");
		// 獲取集合,不存在的話,會自動建立該集合(相當於關係資料庫中的資料表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作資料庫
		try {
			VisitBanner visitBanner=new VisitBanner();
			visitBanner.setBannerTitle("雨天");
			
			Gson gson = new Gson();
			// 轉換成json字串,再轉換成DBObject物件
			DBObject dbObject = (DBObject) JSON.parse(gson.toJson(visitBanner));
			// 插入資料庫
			collection.remove(dbObject);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完後必須要close釋放資源
			client.close();
		}
	}
}