Mybatis批量插入index out of range错误的解决(较偏的错误)

目录
  • Mybatis批量插入index out of range错误
    • 原因
    • 改进
  • String index out of range: 100 报错详解
    • 一个很奇葩的报错,出错情况
    • 知识点
    • 针对上述问题解决办法

Mybatis批量插入index out of range错误

往往我们看到网上关于各类关于批量插入报这种错误的文章都是传入的集合为null,或者是参数获取不对等等,但是在开发的时候同事遇到了这种类型的错误,我一直以为是网上那些博客那些原因造成的,于是,两只眼睛一直盯着代码看来许久都没有找出什么问题。那是什么问题呢?

原因

是由于项目中用的是sharding-jdbc来进行数据库连接,而sharding-jdbc是不支持SQL语句的批量插入的。

改进

1.修改一下批量插入的的语句,这种比较鸡肋,可能会违背很多程序猿开发习惯

2.将连接数据源更换,将sharding-jdbc更换为com.alibaba.druid.pool.DruidDataSource

String index out of range: 100 报错详解

一个很奇葩的报错,出错情况

在这里进行debug之后可以看到,异常在substring中:

也就是判断字符串的时候报错:具体原因就是string字符串indexof的值本身只有5,然后在这里去取其第100 个字符作为截止,因此就会报这个错;

知识点

主要是堆String概念不清。下面针对字符串相关概念(String、char、char[])做一个简介。

针对上述问题解决办法

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈MyBatis原生批量插入的坑与解决方案

    目录 原生批量插入的"坑" 解决方案 分片 Demo 实战 原生批量插入分片实现 总结 前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入.MyBatis Plus 批量插入.MyBatis 原生批量插入,详情请点击<MyBatis 批量插入数据的 3 种方法!> 但之前的文章也有不完美之处,原因在于:使用 「循环单次插入」的性能太低,使用「MyBatis Plus 批量插入」性能还行,但要额外的引入 MyBatis Plus 框架,使用「MyBati

  • mybatis中批量插入的两种方式(高效插入)

    MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 一.mybiats foreach标签 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主

  • Mabatis错误提示Parameter index out of range的处理方法

    这个问题把小编急毁了,捣腾了好几天还没有结果出来,今天终于捣腾出来了,下面小编把经过分享给大家,大家多多提出宝贵意见. 错误信息如下 08:34:43,302 DEBUG getTeachers:139 - ==> Preparing: SELECT a.*,b.classId,b.className FROM TeacherInfo a INNER JOIN ClassInfo b ON a.teacherId=b.teacherId 08:34:43,316 DEBUG NewPooledC

  • Mybatis批量插入index out of range错误的解决(较偏的错误)

    目录 Mybatis批量插入index out of range错误 原因 改进 String index out of range: 100 报错详解 一个很奇葩的报错,出错情况 知识点 针对上述问题解决办法 Mybatis批量插入index out of range错误 往往我们看到网上关于各类关于批量插入报这种错误的文章都是传入的集合为null,或者是参数获取不对等等,但是在开发的时候同事遇到了这种类型的错误,我一直以为是网上那些博客那些原因造成的,于是,两只眼睛一直盯着代码看来许久都没有

  • MyBatis批量插入(insert)数据操作

    在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179

  • MyBatis批量插入数据过程解析

    在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,由于项目使用了Spring+MyBatis的配置,所以打算使用MyBatis批量插入,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来. 实体类TrainRecord结构如下: public class TrainRecord implements Serializable { private static final long serialVersionUID = -12069604621179

  • Mybatis批量插入返回成功的数目实例

    Mybatis批量插入返回影响的行数 环境: postgresql 9.6.5 spring 4.1 mybatis3 junit4 log4j ThesisMapper.xml: <!-- 批量插入 --> <insert id="insertList" parameterType="java.util.List"> insert into public.thesis (name) values <foreach collection

  • MyBatis批量插入大量数据(1w以上)

    问题背景:只用MyBatis中foreach进行批量插入数据,一次性插入超过一千条的时候MyBatis开始报错.项目使用技术:SpringBoot.MyBatis 批量插入碰到的问题: java.lang.StackOverflowError: null 该问题是由于一次性插入数据1w条引起的,具体插入代码如下: userDao.batchInsert(list); <insert id="batchInsert" parameterType="java.util.Li

  • Mybatis批量插入并返回主键id的方法

    目录 场景 错误 分析原因 排查问题 场景 在做商城的时候,sku表进行了拆分,sku的基本信息以及sku的库存表.因为库存会经常的变动,会导致行锁. 这里就是新增的时候,因为在新增商品的时候,会有多条sku的数据进行批量的插入,那么有批量插入sku基本信息以及批量插入sku的库存信息. 其中,就需要批量插入sku的基本信息的时候,返回主键id,这就能够在sku批量插入库存信息的时候能够插入skuId: 错误 nested exception is org.apache.ibatis.execu

  • MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)

    一.mybatis批量插入数据到Oracle中的两种方式: 第一种: <insert id="addList" parameterType="java.util.List" useGeneratedKeys="false"> INSERT ALL <foreach item="item" index="index" collection="list"> INTO

  • Mybatis批量插入更新xml方式和注解方式的方法实例

    前言 最近工作上遇到很多批量插入的场景,但是百度很难得到我想要的结果,而且查出来的效果不是很好- 所以就自己来写一份给大家参考,希望对大家有用 Mybatis 批量插入注解形式 @Insert("<script> INSERT INTO t_device_policy " + "(id,device_id,type,policy,create_time,update_time) " + "VALUES " + "<fo

  • MyBatis批量插入/修改/删除MySql数据

    前言 由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用MyBatis批量插入,应该要比循环插入的效果更好,由于之前没用过批量插入,在网上找了一些资料后最终实现了,把详细过程贴出来.供以后查阅和学习. java代码: 注意:这里循环的时候需new 出来新的对象,而不能通过循环改变属性的值就认为这是一个新的对象了,通俗的说就是new ReddemCode()要放在for循环的

  • 详解mybatis批量插入10万条数据的优化过程

    数据库 在使用mybatis插入大量数据的时候,为了提高效率,放弃循环插入,改为批量插入,mapper如下: package com.lcy.service.mapper; import com.lcy.service.pojo.TestVO; import org.apache.ibatis.annotations.Insert; import java.util.List; public interface TestMapper { @Insert("") Integer test

随机推荐