Spring Boot使用MongoDB(二)

不知道怎么安装MongoDB的请看我上篇
https://blog.csdn.net/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;
    }

http://127.0.0.1:8080/baike/1

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值