本文主要介绍Spring Boot 项目中快速操作 MongoDB 数据库,主要分享基本的增删改查操作。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.3.0.RELEASE</version>
</dependency>
本人是在本地装的mongodb,没有设置用户和密码
logging 是配置在控制台输出日志
spring:
data:
mongodb:
uri: mongodb://localhost:27017/user #使用user数据库,没有的话会自动创建
server:
port: 8099
logging:
level:
org.springframework.data.mongodb.core: debug
@Data //lombook 注解 自动生成getter/setter
//document 注解主要是在数据库下创建一个明为book的集合
@Document(collection = "book")
public class Book {
private String id;
private String name;
private Double price;
}
定义持久层接口的方式有两种 可以直接接着基本的接口,也可以自定义。
继承基础接口后就拥有了对单一集合增删改查的基本操作。
//方法一
public interface BookDao extends MongoRepository<Book,String> {
}
//方法二自定义接口(为了简便我这里直接定义了service 层接口)
public interface BookService {
public void insertBook(Book book);
public Book findById(String id);
public void updateBookById(String id, Book book);
public Book findByName(String name);
}
操作集合主要通过mongoTemple 进行操作
package cuit.jiefang.mongodblearn.service.impl;
import cuit.jiefang.mongodblearn.entity.Book;
import cuit.jiefang.mongodblearn.service.BookService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
/**
* @description:
* @date :2022/4/16 15:30
*/
@Service
public class BookServiceImpl implements BookService {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public void insertBook(Book book) {
this.mongoTemplate.insert(book);
}
@Override
public Book findById(String id) {
return this.mongoTemplate.findById(id,Book.class);
}
@Override
public void updateBookById(String id, Book book) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
Update update = new Update();
update.set("name",book.getName());
update.set("price",book.getPrice());
this.mongoTemplate.updateFirst(query,update,Book.class);
}
@Override
public Book findByName(String name) {
Query query = new Query();
query.addCriteria(Criteria.where("name").is(name));
return this.mongoTemplate.findOne(query,Book.class);
}
}