批量获取主键sequence的主键
来源:互联网 发布:怎么在淘宝买岛国资源 编辑:程序博客网 时间:2024/06/09 18:21
调用工具方法,一次返回单个主键,或多个主键。
要求,数据库sequence每次增加一个基数(100)。这样,只要访问一次数据库,就可以取得100个主键。不需要每条增加都访问sequence。
/**
* @author yangj
*
*/
public class DbidGenerator {
private static long currentSeqId = 0;
private static long currentId = 0;
private static long cache = 100;
/**
* 获取新的id值
* @return
*/
public static long getNextId() {
return getNextMultiId(1)[0];
}
/**
*
* @param count
* @return
*/
public static synchronized long[] getNextMultiId(int count){
if (currentSeqId==0L){//初始化
currentSeqId = getSequenceId();
currentId = currentSeqId;
}
if (count<=1){//个数<=1时,取一个值
long[] c1 = new long[1];
if (currentId-currentSeqId<cache){
currentId++;
}else{
currentSeqId = getSequenceId();
currentId = currentSeqId;
currentId++;
}
c1[0] = currentId;
return c1;
}else{
long[] c1 = new long[count];
for (int i = 0; i < count; i++) {
if (currentId-currentSeqId<cache){
currentId++;
}else{
currentSeqId = getSequenceId();
currentId = currentSeqId;
currentId++;
}
c1[i]=currentId;
}
return c1;
}
}
//获取sequence
private static long getSequenceId(){
//TODO 下列整个代码为测试用,要转成获取db2的sequence
if (currentSeqId==0L){
return 1L;
}else
return currentSeqId+100;
}
/**
* 创建DB2 sequence MSGID_SEQUENCE SQL:
create sequence id_sequence
as bigint
start with 10000000
increment by 100
minvalue 10000000
maxvalue 99999999
cycle
cache 20
order;
*/
/*public long getDB2NextSeqNo() throws Exception {
Object obj = getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(org.hibernate.Session session) throws org.hibernate.HibernateException,SQLException {
Query query = session.createSQLQuery("values nextval for id_sequence");
return query.list();
}
});
BigInteger next = (BigInteger)obj;
return next.longValue();
}*/
public static void main(String[] args){
for (int i=0;i<200;i++){
long l = getNextId();
System.err.println(l);
long[] id = getNextMultiId(2);
System.err.println(id[0]);
System.err.println(id[1]);
}
}
}
- 批量获取主键sequence的主键
- ADF中使用Sequence获取主键的用法
- oracle中事务与sequence获取最新主键,批量insert冲突
- 获取某张表的主键
- JDBC获取自增主键,批量操作
- guid跟sequence做主键的比较
- guid跟sequence做主键的比较
- gridview 获取主键的方法
- gridview获取主键的值
- gridview获取主键的值
- 数据库获取主键的SQL
- 获取自动生成的主键
- 获取目标表的主键
- mysql获取返回的主键
- 获取DataTable的时候同时获取主键
- 主键
- 主键
- 主键
- sql判断字段包含中文
- _TrackMouseEvent 响应 WM_MOUSELEAVE 和 WM_MOUSEHOVER 消息
- 解决vim乱码
- Android触摸分析
- Factoring Large Numbers
- 批量获取主键sequence的主键
- 如果不是异地
- 如何导入导出MySQL数据库*.sql文件操作
- Win32中使用目录浏览器
- android 通过经纬度获取地址信息
- Ubuntu下安装QNX6.5 SDP
- ADO.Net Entity Framework: 动态修改连接串信息
- oracle自增值
- jquery combotree解决点击文字不能展开下级的问题