java.io.IOException: Tried to send an out-of-range integer as a 2-byte value :79944

5 篇文章 0 订阅

当你使用JDBC组装预执行语句的时候,参数的数量是有一个限制的,限制的大小就是2个byte的整数的大小,也就是32767,当超过这个大小的时候你就会看到上面的错误。这是因为PostgreSQL客户端/后端协议规定从客户端发送到PostgreSQL后端的参数的数量为2个byte的integer。

解决方案:遇到上述问题,是因为postpresql数据限制导致的,在不能更改数据库配置的情况,使用代码实现如下

shiSqlsessionfacory是注入的

public void insertToResultExcel(List<Map<String, Object>> paramList) {
	SqlSession batchSqlSession = null;
	try{
		System.err.println("插入的数据量有---------->"+paramList.size());
		batchSqlSession = shiSqlSessionFactory.openSession(ExecutorType.BATCH, false);
		int num = 10000;//这里设置提交的条数,
		for(int i = 0; i < paramList.size(); i++){
			Map<String, Object> map = paramList.get(i);
			PointDomain pointDomain = Map2Bean.map2Bean(map, PointDomain.class);
			batchSqlSession.getMapper(SuanFaMapper.class).insert(pointDomain);
			if(i != 0 && num == 0){
				batchSqlSession.commit();
			}
		}
		batchSqlSession.commit();
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		if(batchSqlSession != null){
			batchSqlSession.close();
		}
	}
	

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值