NutzCN Logo
问答 nutz dao 高并发插入数据库获取ID部分失败的问题
发布于 3160天前 作者 czhouyi 1683 次浏览 复制 上一个帖子 下一个帖子
标签:

测试代码如下

public class DBTool {

	public static void rebuild(Class<?> clazz) {
		DaoFactory.getDao().create(clazz, true);
	}

	public static void main(String[] args) throws UnsupportedEncodingException {
		final Dao dao = DaoFactory.getDao();
		ExecutorService es = Executors.newFixedThreadPool(2000);
		for (int i = 0; i < 2000000; i++) {
			es.execute(new Runnable() {

				@Override
				public void run() {
					Customer c = new Customer();
					c.setCustomerName("123");
					c = dao.insert(c);
					System.out.println(c.getId());
				}
			});
		}
		es.shutdown();
	}
}

测试结果如下:

null
null
null
null
null
null
null
null
null
null
null
1717
null
null
1716
null
null
null
null
1726
null
null
null
null
null
null
null
null
null
1734
null
1732
null
null
null
null
1738
1739
null
null
1745
1746
null
null
null
null
null
null
null
null
null
null
null
null
null
null
1758
null
1760
1761
null
1765
null
null
null
null
null
1768
null
null
1770
null
null
1774
1776
null
null
null
1780
null
null
null
1784
null
null
null
1787
null
1791
null
null
null
null
1797
null
null
null
null
null
null
null
1803
1807
1804
1808
1809
1806
1811
1816
1814
1812
1818

启动程序开始会有ID丢失
启动程序一段时间后ID可以全部获取

3 回复

自增?啥数据库?

mysql数据库,试了最新的版本,好像没问题了

@czhouyi 如果是老版本, 有这种可能性, 先执行一次

dao.getEntity(XXX.class);

或者任何涉及该Pojo的dao操作, 就能确保没问题.

添加回复
请先登陆
回到顶部