为啥分成两篇呢,原因有两个,
一个是,很多人不愿意看太长的文章,另一个原因是,我想多骗点积分。骗了积分没啥用,就是为了提升逼格。
上一篇说了根据需求,创建分表。
下面说,如何使用已经创建的分表。
想看下面的文章呢,先看看
CRC32
直接贴代码,用代码说话。
public static String shard(String tableName, int tableNumber, String DivisionType) { CRC32 crc = new CRC32(); crc.update(DivisionType.getBytes()); int iH1 = (int) (crc.getValue() / tableNumber); int iH2 = iH1 % tableNumber; String iH3 = Integer.toHexString(iH2); if (iH3.length() < 2) { iH3 = new StringBuffer(iH3).insert(0, "0").toString(); } String sTableName = tableName + iH3; return sTableName; }
这个方法,需要传入3个参数,1、表名前缀,2、分表的数量,3、按照什么条件分表。
hospital_dingdan_hid,表名
256,分表的数量
hid,我是按照hid分表的,但是,这里传入的,是hid的值+""
下面我复制一份其他地方引用的代码,传入一个对象,然后生成,这个对象会保存的表。
public String getTableForHId(Project project){ return TableShardUtil.shard(tab+"uid_",512,<span style="font-size: 13.3333px; font-family: Verdana, Arial, Helvetica, sans-serif;">project</span><span style="font-size: 13.3333px; font-family: Verdana, Arial, Helvetica, sans-serif;">.getUid()+"");</span> }
因为CRC32,会生成唯一的一个值(long)
然后,就会根据你传入的对象,获得ID,来生成唯一的值,确定分表了。
各位亲们,可以试试。
如果有什么地方不明白,可以联系我:
QQ:1286238812
时间: 2024-09-17 04:10:40