一、采用mongodb提供的接口进行访问
1. 添加依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.8.2</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>3.8.2</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-core</artifactId>
<version>3.8.2</version>
</dependency>
2. 编写java代码
package com.ruoyi.quartz.task;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
/**
*
*/
public class ImportMongoDBFromMySQL {
public static void main(String[] args) {
try {
//连接MongoDB服务器,端口号为27017
MongoClient mongoClient = new MongoClient("localhost", 27017);
//连接数据库
MongoDatabase mDatabase = mongoClient.getDatabase("box"); //test可选
System.out.println("Connect to database successfully!");
System.out.println("MongoDatabase inof is : "+mDatabase.getName());
MongoCollection collection = mDatabase.getCollection("myTestCollection");
Document document = new Document("_id", 1999)
.append("title", "MongoDB Insert Demo")
.append("description","database")
.append("likes", 30)
.append("by", "demo point")
.append("url", "http://c.biancheng.net/mongodb/");
collection.insertOne(document);
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
}
这里通过Document对需要写入的数据进行组织。
二、采用springboot内置方法访问
springboot内置了mongodb的访问组件,并且提供了两种访问方式,一种是MongoTemplate,另一种是MongoRepository。
1. 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
由于springboot内置了mongodb的支持,所以这里不需要指定版本。
2. application.yml配置
spring:
data:
mongodb:
host: localhost
port: 27017
database: testdb
auto-index-creation: true
3. 通过MongoTemplate访问
@Autowired
private MongoTemplate mongoTemplate;
mongoTemplate.insert(temp);
可以看到,这里只需要声明自动注入 MongoTemplate,然后就可以进行mongodb的操作了。
4. 通过MongoRepository访问
import org.springframework.data.mongodb.repository.MongoRepository;
public interface BillMongodb extends MongoRepository<BillInfo, String> {
}
@Resource
private BillMongodb billMongodb;
billMongodb.save(bill);
这里首先需要定义一个继承了MongoRepository的接口,然后通过@Resource注解注入该接口,然后就可以通过该接口进行mongodb的操作了。
其中包括两个泛型参数,第一个参数是mongodb文档相对应的java对象,第二个参数是mongodb的collection名,默认情况下,和类名称一致。
5. java类中指定mongodb相关属性
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "billInfo")
public class BillInfo extends BaseEntity {
@Id
private String billId;
@Indexed(unique = true)
private String billNo;
}
其中@Indexed(unique = true)表示指定该属性建立唯一索引。@Id表示对应的字段作为主键,属性名称会被修改为_id。
写入数据类似:
{
"_id": "178E5056D8074791992AFE7C19D8EA53",
"billNo": "104011024100075202011201341315055",
......
}
可以看到,@Id标记的字段给修改为_id,作为文档的主键id了。