这是基于maven管理的SpringBoot项目的mongodb测试笔记,只测试了最基本的增删改查和一些踩过的坑。
<parent>
<!-- 这是springboot使用要使用父项目依赖-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
</parent>
<dependencies>
<!-- 这是springboot要测试api前端要引入的包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 这是springboot的mongdb包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- 这是的对于简化实体类的geter,seter等方法简化开发的依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
这个demo只实现get请求的增删查改,后面只展示更新功能。
这个ObjectId是mongodb主键的类型,固定命名为_id,他会根据时间戳、主机唯一标识符、进程标识符(PID)、计数器组成一个12字节的16进制字符串如6086327d4f0d4f2149ed2b1d别问啥12字节有24个,问就是16进制。
二.
三.
四.
完成这四步就可以进行一个简单GET请求更新操作了,
有人看完肯定会问为啥第二步操作为啥不把id封装到user里去呢,还有User里的id不是ObjectId类型吗?
因为在我是java的Controller的save方法里生成User的ObjectId的
这个类是导入mongodb给我们的,只要创建就会自动根据上面的规则生成一个ObjectId。
而我在update中如果把实体类User的setId方法用Get请求路径的id值传进去则会重新创建一个新的ObjectId,用新的id再去更新和删除则会找不到,好奇的可以试试然后控制台输出。
下面是成功前后
简单demo就测试完了,然而在实际的开发中肯定不是这样的,比如还要引入日志,接受post请求,将Json封装成对象、自定义MongoTemplate等,作者刚入门所以只能先用简单的测试把项目跑通。
希望有大佬能把setId的就会创建一个新的ObjectId的解决方法教教我。