Springboot 中的 Mongo 实现集合自增ID

本文介绍如何在Springboot应用中利用MongoDB实现自动递增ID。通过监听文档保存事件,结合反射和MongoTemplate的findAndModify方法,确保ID的原子性更新,从而解决MongoDB无自动递增ID的问题。文章还包含了项目的基本架构和关键代码示例。
摘要由CSDN通过智能技术生成

MongoDB 是一个基于分布式文件存储的数据库,能够为 Web 应用提供可扩展的高性能数据存储解决方案。它介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。

由于MongoDB没法像关系数据库那样实现自动递增ID序列,在此将在基于 Springboot 的框架下实现 MongoDB 的自动递增ID序列。


首先大致说明一下Demo需要准备的东西,以及项目的简易架构:

准备的东西:

  1. MongoDB,没有的话,自己去百度装一个吧~
  2. Springboot,因为快速部署的原因,这里默认就使用它来做,没有的,先自行准备一个
  3. Maven,本人爱好,你也可以用Gradle来构建项目

项目的架构:

  • src/main/java
    • ind.vijay.demo
      • AutoIdDemoApplication.java    -- 项目运行的常规入口
      • util
        • autoid
          • SaveMongoEventListener.java    -- 监听文档保存记录的Mongo事件监听器
      • entity
        • AutoIdTestEntity.java    -- 需要实现自增ID的 Entity 类
        • SequenceId.java    -- 集合ID记录专用集合类
      • dao
        • AutoIdTestDao.java    -- AutoIdTestEntity的DAO层接口
        • AutoIdTestDaoImpl.java    -- DAO接口具体实现类
      • annotation
        • AutoIncrement.java    -- 自增ID的注解
  • src/main/resources
    • application.properties    -- Springboot 的配置文件
  • src/test/java
    • ind.vijay.demo
      • AutoIdDemoTest.java    -- JUnit Test 类
  • pom.xml    -- Maven 依赖包管理

打开mongodb的命令行,先创建一下使用的database和collection

mongodb 命令行 创建集合


对于项目的快速搭建,可以使用 https://start.spring.io/ 这个网站来快速生成,生成后导入到IDE中

快速生成 Springboot 项目

 


接下来说说配置和依赖包:

pom.xml

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
	
	<!-- dao层 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-mongodb</artifactId>
	</dependency>
	
	<!-- 单元测试 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</a
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值