不知道怎么安装MongoDB的请看我上篇
https://blog.youkuaiyun.com/qq_42005257/article/details/90036758
1.集成MongoDB
Spring Boot引入spring-boot-starter-data-mongodb来集成MongoDB,以下是在pom中添加的内容
<!-- spring boot 集成MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
还需要在配置文件application.properties中配置MongoDB的链接地址:
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/baike
27017是MongoDB默认的端口,test是内置的数据库。如果MongoDB使用了–auth选项启动,则需要使用用户登录,可以使用下面连接
spring.data.mongodb.uri=mongodb://test:123%25abc!@127.0.0.1:27017/baike
注意:“%”字符再URL中使用%25.这是因为URL Encode的结果。如果你不清楚你的密码对应的URl的编码是什么,可以从网上找“在线URI编码”,会有很多工具帮助你转换。
启动Spring Boot应用,看到以下的提示信息,表示成功
Opened connection [connectionId{localValue:1, serverValue:2}] to localhost:27017
Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 1, 10]}, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, roundTripTimeNanos=1872678}
2.增删该查
本章假定文档对应对象如下:
// 百科关键字,id将对应的MongoDB的_id
private String id;
private String desc;
private List<String> tag;
private Comment comment;
private LocalDate crateDate;
private LocalDate updateDate;
Spring Boot 使用MongoTemplate作为核心来进行增删改查操作,提供了insert、findById、find、findAndModify、findAndRemove等方法。MongoTemplate 可以自动注入到Spring管理的Bran中,Controller或者Service。
2.1增加API
MongoTemplate 提供了insert 和 save 两个方法来新增文档或文档对象,前者新增一个文档,后者新增或者更新文档对象。对象名字的首字母小写变成MongoDB集合名称。如baike对象再mongodb中集合和名字是百科 @Autowired
MongoTemplate mongoTemplate;
@GetMapping("addbaike")
public Baike addDict(Baike baike){
baike.setCrateDate(LocalDate.now());
mongoTemplate.insert(baike);
return baike;
}
http://127.0.0.1:8080/addbaike?id=1&desc=dao&tag[0]=IT
控制台输出,表示新增成功
Opened connection [connectionId{localValue:5, serverValue:6}] to 127.0.0.1:27017
注意:为了测试方便,使用了GetMapping来添加文档,其实用PostMapping
2.2根据主键查询 API
MongoTemplate提供了findById,用于根据主键查询文档,并映射到Java对象: @GetMapping("/baike/{name}")
public Object findUser(
@PathVariable String name
){
Object dict = mongoTemplate.findById(name, Baike.class);
return dict;
}
2.3修改 API
@GetMapping("/baike/tag/{tag}")
public @ResponseBody String addOne(
@PathVariable String teg
){
Criteria criteria = where("tag").in(tag);
Update update = new Update();
update.inc("comment.good".1);
UpdateResult.result = mongoTemplate.updateMulti(query(criteria),update,Baike.class);
return "成功修改"+result.getModifedCount();
}
2.4删除 API
@GetMapping("/deletebaike/")
public Baike deleteDict(String id){
Baike baike = new Baike();
baike.setId(id);
mongoTemplate.remove(baike);
return baike;
}
2.5打印日志
mongoTemplate提供了大量API来访问MongoDB,通过配置日志等级来了解访问细节,设置如下:logging.level.org.org.springframework.data.mongodb=debug