SpringBoot - 整合并操作MongoDB数据库教程2(使用MongoTemplate)
除了继承 MongoRepository 外,Spring Data MongoDB 还提供了 MongoTemplate 用来方便地操作 MongoDB。MongoDB 相关的依赖和配置参考之前的文章(点击查看),这里就不再重复说明了。
三、使用 MongoTemplate 操作数据库
1,创建实体类
首先我们创建 Book 实体类:@Setter
@Getter
@NoArgsConstructor
public class Book {
private Integer id;
private String name;
private String author;
}
2,MongoTemplate 介绍
- 在 Spring Boot 中,若添加了 MongoDB 相关的依赖,而开发者并没有提供 MongoTemplate,则默认会有一个 MongoTemplate 注册到 Spring 容器中。
- 也就是说我们直接在 Controller 中注入 MongoTemplate 就可以使用了,而不需要额外在定义相关的 Dao。
3,运行测试
(1)创建一个 Contoller,使用 MongoTemplate 将数据插入到数据库中。
@RestController
public class HelloController {
@Autowired
MongoTemplate mongoTemplate;
@RequestMapping("/save")
public void save(){
List<Book> books = new ArrayList<Book>();
Book b1 = new Book();
b1.setId(4);
b1.setName("克苏鲁神话");
b1.setAuthor("H.P.洛夫克拉夫特 ");
books.add(b1);
Book b2 = new Book();
b2.setId(5);
b2.setName("筋膜拉伸");
b2.setAuthor("克里斯·弗雷德里克 ");
books.add(b2);
mongoTemplate.insertAll(books);
return;
}
}
(2)下面是使用 MongoTemplate 进行数据查询:
@RestController
public class HelloController {
@Autowired
MongoTemplate mongoTemplate;
@RequestMapping("/search")
public void search(){
List<Book> books = mongoTemplate.findAll(Book.class);
Book book = mongoTemplate.findById(1, Book.class);
System.out.println(books);
System.out.println(book);
}
}
注:使用自动生成的主键 Id
(1)通常来说我们主键 id 不需要自己手动设置,如果想要自动生成,只需在主键字段上添加 @id 注解即可(参数类型为 String)注意:@Id 表示主键,不可重复,自带索引。如果自己不设置 @Id 主键,mongo 会自动生成一个唯一主键,并且插入时效率远高于自己设置主键。
@Setter
@Getter
@NoArgsConstructor
public class Book {
@Id
private String id;
private String name;
private String author;
}
(2)再次使用 MongoTemplate 将数据插入到数据库中。只不过这次我们不再手动设置 id :
@RestController
public class HelloController {
@Autowired
MongoTemplate mongoTemplate;
@RequestMapping("/save")
public void save(){
List<Book> books = new ArrayList<Book>();
Book b1 = new Book();
b1.setName("克苏鲁神话");
b1.setAuthor("H.P.洛夫克拉夫特 ");
books.add(b1);
Book b2 = new Book();
b2.setName("筋膜拉伸");
b2.setAuthor("克里斯·弗雷德里克 ");
books.add(b2);
mongoTemplate.insertAll(books);
return;
}
}
(3)数据插入后,可以发现数据已经有自动生成的 id 了:
