Skip to content
airfey edited this page Nov 18, 2013 · 9 revisions

Welcome to the spring-mongodb-demo wiki!

关于主键自增的实现

/** * 根据集合名称以及级别生成自增id

  • @Title: getAutoIncreaseID
  • @param cname
  • @param level
  • @return
  • @Author: airfey 2013-10-29 下午12:16:06 */

private long getAutoIncreaseID(String cname, Number level) {

BasicDBObject query = new BasicDBObject();

query.put("cname", cname);

BasicDBObject update = new BasicDBObject();

update.put("$inc", new BasicDBObject("cid", level));

DBObject dbObject2 = this.mongoTemplate.getCollection("inc_ids")

        .findAndModify(query, null, null, false, update, true, true);

return (Long) dbObject2.get("cid");

}

利用$inc的原子性和多线程安全性,每次自增Number level(一般level=1),实现自增主键id的封装。

Clone this wiki locally