SpringBoot 整合MongoDB
Mongodb
MongoDB是一种面向文档的数据库管理系统,它是一个介于关系型数据库和非关系型数据库之间的产品,MongoDB功能丰富,它支持一种类似JSON的BSON数据格式,既可以存储简单的数据格式,也可以存储复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,并且还支持对数据建立索引。
在pom.xml中添加相关依赖
<!---mongodb相关依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
在application.yml中配置MongoDB的连接信息
spring:
data:
mongodb:
authentication-database: admin
database: test
host: 172.19.25.170
port: 27017
username: sang
password: 123
创建BookDao:
BookDao的定义类似于Spring Data JPA中的Repository定义
public interface BookDao extends MongoRepository<Book, Integer> { List<Book> findByAuthorContains(String author); Book findByNameEquals(String name); }
MongoRepository中已经预定义了针对实体类的查询、添加、删除等操作。
创建Controller:
@RestController public class BookController { @Autowired BookDao bookDao; @Autowired MongoTemplate mongoTemplate; @GetMapping("/test2") public void test2() { List<Book> books = new ArrayList<>(); Book b1 = new Book(); b1.setId(3); b1.setName("围城"); b1.setAuthor("钱钟书"); books.add(b1); Book b2 = new Book(); b2.setId(4); b2.setName("宋诗选注"); b2.setAuthor("钱钟书"); books.add(b2); mongoTemplate.insertAll(books); List<Book> list = mongoTemplate.findAll(Book.class); System.out.println(list); Book book = mongoTemplate.findById(3, Book.class); System.out.println(book); } @GetMapping("/test1") public void test1() { List<Book> books = new ArrayList<>(); Book b1 = new Book(); b1.setId(1); b1.setName("朝花夕拾"); b1.setAuthor("鲁迅"); books.add(b1); Book b2 = new Book(); b2.setId(2); b2.setName("呐喊"); b2.setAuthor("鲁迅"); books.add(b2); bookDao.insert(books); List<Book> books1 = bookDao.findByAuthorContains("鲁迅"); System.out.println(books1); Book book = bookDao.findByNameEquals("朝花夕拾"); System.out.println(book); } }
除了继承MongoRepository外,Spring Data MongoDB还提供了MongoTemplate用来方便地操作MongoDB。在Spring Boot中,若添加了MongoDB相关的依赖,而开发者并没有提供MongoTemplate,则默认会有一个MongoTemplate注册到Spring容器中,相关配置源码在MongoDataAutoConfiguration类中。因此,用户可以直接使用MongoTemplate,在Controller中直接注入MongoTemplate就可以使用了
@Data public class Book { private Integer id; private String name; private String author; }
查看文章: Spring Boot+Vue全栈开发实战-6.2 整合MongoDB