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

java.io.IOException: Tried to send an out-of-range integer as a 2-byte value :79944_第1张图片

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

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

shiSqlsessionfacory是注入的

public void insertToResultExcel(List> 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 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();
		}
	}
	

 

你可能感兴趣的:(sql,java)