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:"chushiyan0415@163.com",
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 chushiyan0415@163.com
* @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 chushiyan0415@163.com
* @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;
}
}