SpringBoot - 整合并操作MongoDB数据库教程2(使用MongoTemplate)
作者:hangge | 2019-12-06 08:10
除了继承 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 了:
全部评论(0)