详解SpringBoot Mongo 自增长ID有序规则
更新时间:2021年09月29日 15:39:39 作者:昵称为空C
本文主要介绍springboot基于mongodb有序id生成,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
概述:本文主要介绍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 @Data public class Incr { @Id private String id; private String collectionName; private Long incrId; }
@Service public class IncrService { @Autowired private MongoTemplate mongoTemplate; /** * 获取自增ID * @param collectionName * @return */ public Long getIncrId(String collectionName){ Query query = new Query(Criteria.where("collectionName").is(collectionName)); Update update = new Update(); update.inc("incrId"); FindAndModifyOptions options = FindAndModifyOptions.options(); options.upsert(true); options.returnNew(true); Incr incr = mongoTemplate.findAndModify(query,update,options,Incr.class); return incr.getIncrId(); } }
@RestController @RequestMapping(value = "incr") public class IncrController { @Autowired private IncrService incrService; @RequestMapping(value = "test") public Object test(){ long start = System.currentTimeMillis(); List<String> aas = new ArrayList<>(); for (int i=0;i<10000;i++){ aas.add(i+""); } int i = 0; aas.parallelStream().forEach(aa -> { incrService.getIncrId(aa+""); }); System.out.println(System.currentTimeMillis()-start); return true; } }
到此这篇关于详解SpringBoot Mongo 自增长ID有序规则的文章就介绍到这了,更多相关SpringBoot Mongo 自增长ID内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java使用ThreadLocal实现当前登录信息的存取功能
ThreadLocal和其他并发工具一样,也是用于解决多线程并发訪问,下这篇文章主要给大家介绍了关于Java使用ThreadLocal实现当前登录信息的存取功能,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2023-02-02MyBatis如何处理MySQL字段类型date与datetime
这篇文章主要介绍了MyBatis如何处理MySQL字段类型date与datetime问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-01-01Java Hutool工具实现验证码生成及Excel文件的导入和导出
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,本文主要介绍了使用Hutool工具实现验证码生成和excel文件的导入、导出,需要的朋友可参考一下2021-11-11
最新评论