java.lang.runtimeexception:index out of range

问题遇到的现象和发生背景

String字符串往mybatis存入,存入字段的类型为CLOB,String字符串太大所抛出的异常

sql在执行之前会把所有字符类型的数据转换成VARCHAR2类型,而VARCHAR2类型的最大长度为4000,所以当字符串超过这个长度就会转换失败。在sql文中,两个单引号中间的字节长度不可超过4000个字节,超过则会报错。4000个字节若是gbk格式的就是2000个汉字
解决:定义一个函数,用函数语句去执行此sql文。

也可以将其处理成数据流然后存入