java连接mongoDB数据库
前提:在连接mongoDB前先把mongoDB数据库搭好,这里我就不多说啦,直接上代码
- 导入pom依赖
<!--mongo-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.11.2</version>
</dependency>
- 创建链接对象并操作
// 连接服务器
MongoClient mongoClient = new MongoClient("10.2.0.192");
// 获取库 没有则创建
MongoDatabase june = mongoClient.getDatabase("june");
// 获取获取数据库表中的集合 没有则创建
MongoCollection<Document> test = june.getCollection("test");
// 对表的操作
// 添加数据 后面可以跟n个 append 增
test.insertOne(new Document().append("name","june").append("age",20));
// 删除数据 删
DeleteResult deleteResult = test.deleteMany(new Document("age", 19));
// 获取删除的条数
System.out.println(deleteResult.getDeletedCount());
// 修改数据 改
test.updateOne(new Document("name","june"),new Document("$set",new Document("age",18)));
// 获取所有数据 查
FindIterable<Document> documents = test.find();
for (Document document : documents) {
System.out.println(document.toJson());
}
// 关闭资源
mongoClient.close();
-
使用Gson转换查询出来的数据
3.1 导入pom依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
3.2 使用Gson
为什么要使用Gson?答案如下
不使用Gson查询出来的数据
Document{{_id=5dd8da5cd6ad5b0e3aaa499e, name=june, age=18}}
Document{{_id=5dd8db35c2ea5c499d91c1ee, name=june, age=20}}
...
只能获取到所有的信息,没办法取其中之一
使用Gson查询出来的数据可以取其中的数据,但前提得创建bean对象
注意:bean对象的id是一个对象(MongoDB默认生成的),所以要创建两个bean对象,示例如下
// 此处使用lombok无法生成get set,原因可能是$符号导致的
public class OId {
// $oid为已确定的,不能够改变
private String $oid;
public String get$oid() {
return $oid;
}
public void set$oid(String $oid) {
this.$oid = $oid;
}
@Override
public String toString() {
return "OId{" +
"$oid='" + $oid + '\'' +
'}';
}
}
@Data
public class User {
private OId _id;
private String name;
private Integer age;
}
public class App2 {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("10.2.0.192");
MongoDatabase june = mongoClient.getDatabase("june");
MongoCollection<Document> test = june.getCollection("test");
// 查询所有的文档
FindIterable<Document> documents = test.find();
// new一个gson对象
Gson gson = new Gson();
for (Document document : documents) {
// 转为json字符串
String json = document.toJson();
// 获取对象
User user = gson.fromJson(json, User.class);
// 根据键名逐个输出取到的值,键名必须和表匹配,否则拿到null,
System.out.println(user.get_id().get$oid() + ":" + user.getName() + ":" + user.getAge());
}
}
}
// 拿到的结果
5dd8da5cd6ad5b0e3aaa499e:june:18
5dd8db35c2ea5c499d91c1ee:june:20
以如果是springBoot,只需要在配置文件里面写上一下代码就行了,不需要再像上面一样创建连接
spring:
data:
mongodb:
uri: mongodb://10.1.0.111 这里写的是数据库ip
总结
如果要对拿到的数据进行操作的话,建议使用后者的方法,除了Gson以外也可以使用Jackson、Fastjson等这类转json的工具,效果都是一样的,看个人喜好吧