詳解SpringBoot Mongo 自增長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內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- springboot整合mongodb並實現crud步驟詳解
- SpringBoot整合Mongodb實現增刪查改的方法
- SpringBoot整合MongoDB的實現步驟
- SpringBoot輕松整合MongoDB的全過程記錄
- SpringBoot整合MongoDB的步驟詳解