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;
}
}