首页>>后端>>SpringBoot->SpringBoot Mongo 自增长ID有序规则

SpringBoot Mongo 自增长ID有序规则

时间:2023-11-29 本站 点击:0

概述

本文主要介绍springboot基于mongodb有序id生成,如生成工单编号GD202109290001。单机情况下效率每秒生成5000个有序ID。

实现方式

maven

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><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</artifactId><scope>test</scope></dependency></dependencies>

代码编写

@Document@DatapublicclassIncr{@IdprivateStringid;privateStringcollectionName;privateLongincrId;}

@ServicepublicclassIncrService{@AutowiredprivateMongoTemplatemongoTemplate;/***获取自增ID*@paramcollectionName*@return*/publicLonggetIncrId(StringcollectionName){Queryquery=newQuery(Criteria.where("collectionName").is(collectionName));Updateupdate=newUpdate();update.inc("incrId");FindAndModifyOptionsoptions=FindAndModifyOptions.options();options.upsert(true);options.returnNew(true);Incrincr=mongoTemplate.findAndModify(query,update,options,Incr.class);returnincr.getIncrId();}}

@RestController@RequestMapping(value="incr")publicclassIncrController{@AutowiredprivateIncrServiceincrService;@RequestMapping(value="test")publicObjecttest(){longstart=System.currentTimeMillis();List<String>aas=newArrayList<>();for(inti=0;i<10000;i++){aas.add(i+"");}inti=0;aas.parallelStream().forEach(aa->{incrService.getIncrId(aa+"");});System.out.println(System.currentTimeMillis()-start);returntrue;}}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/SpringBoot/357.html