mongoDb +Java+springboot


 前言 :mongoDb 是一種比較常用的非關系數據庫,文檔數據庫, 格式為json ,redis 有五種格式。

1. 項目中要使用,這里簡單做個示例。首先是連接mongoDB,用的最多的robomongodb,下載,安裝, 連接。

連接成功結構是這樣的。

 

2.第二個maven引入jar包。我用的是springboot,里面直接有

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

 

3,mongoDB  java api 類似redis的  jedis 別人寫好的工具類, 拿來用就是。

package com.ycmedia.utils;

import java.net.UnknownHostException;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  

import org.bson.types.ObjectId;  
  

import com.mongodb.BasicDBObject;  
import com.mongodb.DB;  
import com.mongodb.DBCollection;  
import com.mongodb.DBObject;  
import com.mongodb.Mongo;  
import com.mongodb.MongoException;  
  
  
@SuppressWarnings("deprecation")
public final class MongoDbUtil {  
  
    private static final String HOST = "180.97.75.185:38017";  
  
    private static final String dbName = "yc";  
  
    private static Mongo mongo;  
  
    private static DB db;  
  
    static {  
        try {  
            mongo = new Mongo(HOST);  
            db = mongo.getDB(dbName);  
            // db.authenticate(username, passwd)  
        } catch (UnknownHostException e) {  
            e.printStackTrace();  
        } catch (MongoException e) {  
            e.printStackTrace();  
        }  
    }  
  
    private MongoDbUtil() {  
    }  
  
    /** 
     * 添加操作 
     * 
     * @param map 
     * @param collectionName 
     */  
    public static void add(Map<String, Object> map, String collectionName) {  
        DBObject dbObject = new BasicDBObject(map);  
        getCollection(collectionName).insert(dbObject);  
    }  
      
    /** 
     * 添加操作 
     * 
     * @param list 
     * @param collectionName 
     */  
    public static void add(List<Map<String, Object>> list, String collectionName) {  
        for (Map<String, Object> map : list) {  
            add(map, collectionName);  
        }  
    }  
      
    /** 
     * 刪除操作 
     * 
     * @param map 
     * @param collectionName 
     */  
    public static void delete(Map<String, Object> map, String collectionName) {  
        DBObject dbObject = new BasicDBObject(map);  
        getCollection(collectionName).remove(dbObject);  
    }  
      
    /** 
     * 刪除操作,根據主鍵 
     * 
     * @param id             
     * @param collectionName 
     */  
    public static void delete(String id, String collectionName) {  
        Map<String, Object> map = new HashMap<String, Object>();  
        map.put("_id", new ObjectId(id));  
        delete(map, collectionName);  
    }  
      
    /** 
     * 刪除全部 
     * 
     * @param collectionName 
     */  
    public static void deleteAll(String collectionName) {  
        getCollection(collectionName).drop();  
    }  
      
    /** 
     * 修改操作
     * 會用一個新文檔替換現有文檔,文檔key結構會發生改變
     * 比如原文檔{"_id":"123","name":"zhangsan","age":12}當根據_id修改age  
     * value為{"age":12}新建的文檔name值會沒有,結構發生了改變 
     * 
     * @param whereMap       
     * @param valueMap       
     * @param collectionName 
     */  
    public static void update(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {  
        executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){  
            public DBObject doCallback(DBObject valueDBObject) {  
                return valueDBObject;  
            }  
        });  
    }   
      
    /** 
     * 修改操作,使用$set修改器
     * 用來指定一個鍵值,如果鍵不存在,則自動創建,會更新原來文檔, 不會生成新的, 結構不會發生改變 
     * 
     * @param whereMap       
     * @param valueMap       
     * @param collectionName 
     */  
    public static void updateSet(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {  
        executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){  
            public DBObject doCallback(DBObject valueDBObject) {  
                return new BasicDBObject("$set", valueDBObject);  
            }  
        });  
    }   
      
    /** 
     * 修改操作,使用$inc修改器
     * 修改器鍵的值必須為數字
     * 如果鍵存在增加或減少鍵的值, 如果不存在創建鍵 
     * 
     * @param whereMap       
     * @param valueMap       
     * @param collectionName 
     */  
    public static void updateInc(Map<String, Object> whereMap, Map<String, Integer> valueMap, String collectionName) {  
        executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){  
            public DBObject doCallback(DBObject valueDBObject) {  
                return new BasicDBObject("$inc", valueDBObject);  
            }  
        });  
    }   
      
    /** 
     * 修改 
     * 
     * @param collectionName 
     * @param whereMap 
     * @param valueMap 
     * @param updateCallback 
     */  
    private static void executeUpdate(String collectionName, Map whereMap, Map valueMap, UpdateCallback updateCallback) {  
        DBObject whereDBObject = new BasicDBObject(whereMap);  
        DBObject valueDBObject = new BasicDBObject(valueMap);  
        valueDBObject = updateCallback.doCallback(valueDBObject);  
        getCollection(collectionName).update(whereDBObject, valueDBObject);  
    }  
      
    interface UpdateCallback {  
          
        DBObject doCallback(DBObject valueDBObject);  
    }  
      
    /** 
     * 獲取集合(表) 
     * 
     * @param collectionName 
     * @return 
     */  
    public static DBCollection getCollection(String collectionName) {  
        return db.getCollection(collectionName);  
    }  
    
    
    public static void main(String[] args) {
        DBCollection collection = getCollection("url");
        BasicDBObject queryObject = new BasicDBObject("urlMd5","bfa89e563d9509fbc5c6503dd50faf2e");
        
        DBObject obj = collection.findOne(queryObject);
        
        System.out.println(obj);
    }
}

 

4.查詢

    public static void main(String[] args) {
        DBCollection collection = getCollection("url");
        BasicDBObject queryObject = new BasicDBObject("urlMd5","bfa89e563d9509fbc5c6503dd50faf2e");
        
        DBObject obj = collection.findOne(queryObject);
        
        System.out.println(obj);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM