ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis获取自增id

2021-06-15 13:01:59  阅读:290  来源: 互联网

标签:自增 Redis tableName jedis primaryKeyMap import id


记录一份代码

import java.util.HashMap;
import java.util.Map;

import com.jfinal.plugin.activerecord.ActiveRecordException;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.redis.Redis;

import huazhan.user.vo.User;
import redis.clients.jedis.Jedis;

public class PrimaryKeyGeneratorKit {
    
    /**
     * 需要自增的主键Map
     * key: 表名
     * value: 主键字段名
     */
    private static Map<String, String> primaryKeyMap = new HashMap<>();
    
    static {
        primaryKeyMap.put(User.TABLE_NAME, User.PRIMARY_KEY);
    }
    
    private PrimaryKeyGeneratorKit() {
        throw new IllegalStateException("Utility class");
    }
    
    /** 
     * @Title getIncr 
     * @Description 获取自增id 
     * @param tableName 自增id所属的表名
     * @return Long
     * @version V1.0
     * @date 2021年6月9日 下午5:38:47  
     * @author zlj
     */
    public static synchronized Long getIncr(String tableName){
        Jedis jedis = Redis.use().getJedis();
        try {
            if(!primaryKeyMap.containsKey(tableName)) {
                throw new ActiveRecordException("idFieldMap中不存在【" + tableName + "】,如需要使用自增id,请先将需要获取自动id的表名添加到 idFieldMap中");
            }
            if(!jedis.exists(tableName)) {
                Number id = Db.queryNumber("SELECT "+ primaryKeyMap.get(tableName) +" FROM "+ tableName +" ORDER BY "+ primaryKeyMap.get(tableName) +" DESC LIMIT 1 ");
                jedis.set(tableName, id == null ? "0" : id.toString());
            }
            return jedis.incr(tableName);
        } finally {
            jedis.close();
        }
    }
}

 

标签:自增,Redis,tableName,jedis,primaryKeyMap,import,id
来源: https://blog.csdn.net/qq_33257711/article/details/117922121

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有