返回 导航

SpringBoot / Cloud

hangge.com

SpringBoot - 整合并操作MongoDB数据库教程2(使用MongoTemplate)

作者:hangge | 2019-12-06 08:10
   除了继承 MongoRepository 外,Spring Data MongoDB 还提供了 MongoTemplate 用来方便地操作 MongoDBMongoDB 相关的依赖和配置参考之前的文章(点击查看),这里就不再重复说明了。

三、使用 MongoTemplate 操作数据库 

 1,创建实体类

首先我们创建 Book 实体类:
@Setter
@Getter
@NoArgsConstructor
public class Book {
    private Integer id;
    private String name;
    private String author;
}

2,MongoTemplate 介绍


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)

回到顶部