java maven項目(非spring項目)中mongodb的增刪改查

mongodb-driver是mongo官方推出的java連接mongoDB的驅動包,相當於JDBC驅動。

一、數據庫準備

(一)開啓mongodb

如果是windows上,進入到MongoDB安裝目錄下bin目錄(如果添加到了環境變量,直接輸入即可)

打開CMD,輸入mongod.exe --dbpath=你創建的data路徑。回車之後,就開啓了MongoDB服務端(不要關閉當前CMD。如果關閉了,就關閉了mongodb。)

mongod.exe --dbpath=E:\chushiyan

如果是服務器centos7,可參考我的博客:Docker 環境下MongoDB安裝、連接

(二)連接mongodb、插入測試數據

另開一個CMD

mongo
user testdb # 創建testdb數據庫
db.createCollection("user") # 創建user集合

# 插入測試數據:
db.user.insert({
_id:"1",
name:"chushiyan",
email:"[email protected]",
password:"123456",
});


二、創建maven工程,導入mongodb-driver依賴

<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver</artifactId>
        <version>3.6.3</version>
    </dependency>
</dependencies>

如果沒使用maven,可以加入如下的jar包:

bson-3.6.3.jar
mongodb-driver-3.6.3.jar
mongodb-driver-core-3.6.3.jar

三、增刪改查

1、測試增加

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author chushiyan
 * @email [email protected]
 * @description 測試
 */

public class Main {
    public static void main(String[] args) {
        // 創建連接
        MongoClient client = new MongoClient("127.0.0.1");
        // 使用默認的端口27017,如果是其他端口,可以指定:
        // MongoClient client = new MongoClient("127.0.0.1:27018");
        

        // 打開數據庫
        MongoDatabase testdb = client.getDatabase("testdb");

        // 獲取集合
        MongoCollection<Document> userCollection = testdb.getCollection("user");

		Map<String, Object> map = new HashMap<String, Object>();
        map.put("_id", UUID.randomUUID().toString().replace("-", ""));
        map.put("email", user.getEmail());
        map.put("password", user.getPassword());

        Document document = new Document(map);
        userCollection.insertOne(document);

        // 關閉連接
        client.close();
    }
}

2、UserDao.java

對連接數據庫、獲取集合的代碼進行封裝

import com.example.pim.domain.User;
import com.example.pim.utils.MD5Utils;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @author chushiyan
 * @email [email protected]
 * @description 用戶Dao
 */
public class UserDao {

    private static MongoCollection<Document> userCollection;

    static {
        try {
            // 連接
            MongoClient mongoClient = new MongoClient("127.0.0.1");

            // 獲取db
            MongoDatabase db = mongoClient.getDatabase("testdb");

            // 獲取集合
            userCollection = db.getCollection("user");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 增:添加用戶
     */
    public void add(User user) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("_id", UUID.randomUUID().toString().replace("-", ""));
        map.put("email", user.getEmail());
        map.put("name", user.getName());
        map.put("password", user.getPassword());
        Document document = new Document(map);
        userCollection.insertOne(document);
    }
    
    /**
    * 查:根據 id 查詢
    */ 
    public User findUserById(String id) {

        // 構建查詢條件
        BasicDBObject bson = new BasicDBObject();
        bson.append("_id", id);

        // 查詢記錄獲取文檔集合
        FindIterable<Document> documents = userCollection.find(bson);

        Document document = documents.first();

        return documentToUser(document);

    }
    
	/**
	* 查:根據郵箱密碼查詢用戶
	*/
    public User findUserByEmailAndPassword(User user) {
        // 構建查詢條件
        BasicDBObject bson = new BasicDBObject();
        bson.append("email", user.getEmail());
        bson.append("password", user.getPassword());

        // 查詢記錄獲取文檔集合
        FindIterable<Document> documents = userCollection.find(bson);
        
        Document document = documents.first();
        
        return documentToUser(document);
    }


    /**
    * 改:修改用戶
    */
    public void update(User user) {

        BasicDBObject newDocument = new BasicDBObject();
        newDocument.put("name", user.getName());
		newDocument.put("password", user.getPassword());
       
        BasicDBObject updateDocument = new BasicDBObject();
        updateDocument.append("$set", newDocument);

        BasicDBObject searchQuery = new BasicDBObject().append("_id", user.get_id());

        userCollection.updateOne(searchQuery, updateDocument);
    }
    
	/**
	* 改:修改密碼
	*/ 
    public void updatePassword(String _id, String newPassword) {

        BasicDBObject newDocument = new BasicDBObject();
        newDocument.put("password", newPassword);
        BasicDBObject updateDocument = new BasicDBObject();
        updateDocument.append("$set", newDocument);
        BasicDBObject searchQuery = new BasicDBObject().append("_id", _id);
        userCollection.updateOne(searchQuery, updateDocument);
    }
	
    
    private User documentToUser(Document document) {
        if (document != null) {
            User user = new User();
            user.set_id(document.getString("_id"));
            user.setEmail(document.getString("email"));
            user.setName(document.getString("name"));
            user.setPassword(document.getString("password"));
            return user;
        }
        return null;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章