问这个问题的面试官就是脑子有病。谁遇到问题能天天记得,时间久了,谁不忘记?奶奶滴腿,我还得专门写篇文章记一下。焯

问题1:Mybatis预编译限制

我们有个数据同步场景,从数据库A同步到数据库B中。我们允许数据同步延迟1天,我们就每12小时执行一个定时任务,用于同步数据。我们从库A拿到数据,往数据库B插入。一开始测试的时候,用Batch模式插入,数据量很小,没发现同步有啥问题。后来数据量大了之后,就报错了。一条sql使用#{} 预编译次数不得超过2100个。也就是这个集合最大长度就是 (2100 / sql字段个数) - 1

问题2:PageHelper页数修正问题

Mybatis文档有这句话:你希望用户输入的页数不在合法范围(第一页到最后一页之外)时能够正确的响应到正确的结果页面, 那么你可以配置 reasonable 为 true,这时如果 pageNum<=0 会查询第一页,如果 pageNum>总页数 会查询最后一页。

项目中使用的是reasonable = true。我在同步数据的时候,利用页数+1,查询新的集合,当页数超标后,集合长度肯定就变成0了。判定是以集合长度为准的。于是就出现死循环的场景。于是就改为通过页数是否大于最大页数作为do while循环的条件。

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤