LuckysheetServer的mysql数据实现不能保存数据的问题

在使用LuckysheetServer的时候,我用的mysql数据源,配置好各个中间件,用share方式访问页面

http://localhost:8080/lsweb/index.html?share=1&gridKey=1079500#-8803#7c45f52b7d01486d88bc53cb17dcd2c3

多端登陆在线编辑表格,但是刷新后发现之前编辑的数据都丢了,只能留下最后一次提交的数据。debug看了一下,发现可能是更新时候传的一个数组下标的参数有点问题,就是图中update函数的最后一个传参,0这个位置:

LuckysheetServer的mysql数据实现不能保存数据的问题_第1张图片

 这个0后来通过position字段被拼接到了$.celldata[]的数组下标中(注:下图中是修复后的值),导致的结果就是mysql一直在对celldata的第0个元素做覆盖操作。

LuckysheetServer的mysql数据实现不能保存数据的问题_第2张图片

 修复的思路是:在 JfGridUpdateService 类的  Operation_v 方法中增加一个int 变量来获取数据块的当前元素数量,然后将这个数量传给sql。

实际改动为:

1.增加一个变量celldataLength,

2.获取变量数量后再+1000。因为mysql的json_set方法在向数组对象赋值时,下标超过数组数量时会添加到数组末尾,这样来回避掉多人在线编辑时线程不安全的问题。

LuckysheetServer的mysql数据实现不能保存数据的问题_第3张图片

3.传到updateJsonb的方法中

LuckysheetServer的mysql数据实现不能保存数据的问题_第4张图片

 

 来看一下实测效果,数据都能保存了,刷新页面后也能加载出来。

LuckysheetServer的mysql数据实现不能保存数据的问题_第5张图片

 

你可能感兴趣的:(效率提升工具,java,mysql)