MongoDB與Java的整合
阿新 • • 發佈:2018-12-24
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(); } } }