public static String getPrimaryKey(String tableName, String primaryKey, int length) { String sql = "SELECT CONCAT(LPAD(MAX("+primaryKey+") + 1 , "+length+", '0'), '') id from "+tableName; String id = new String((byte[])(Db.queryFirst(sql))); return id.toString(); // return "00002"; }
写一个极其简单的主键生成方法,居然为这个折腾好久,看来还是自己太菜了
年月日 + 小时 + 分 + 秒 + 业务类型 + hash(userId)
由于 userId 是不可能重复的,hash 以后与前面的一系列数值拼接起来几乎不可能重复,再加上这个值设置为表的主键或者联合主键,即便出现重复也无法插入数据库