说说昨天困扰我一天的mybatis问题

364 阅读1分钟

这几周任务要重构以前的老代码。因为以前的开发业务理解错了。昨天再做一个mybatis批量插入返回自增主键id的时候。发现只能返回第一条的主键id。后面的id全是错的。百思不得其解。先看了看以前的代码。感觉没什么问题。

11.png

粗略一看没发现什么问题。于是我baidu google。都搜了下发现有的人说是版本原因。升级后就解决了,我又看了看自己的版本。嗯。看来不是这个问题。那是为啥呢。思考了很久。又去mybaits官网发布解决批量插入bug的发行版看了看说明与示例。终于让我发现了盲点。因为以前的插入字段名与值都是在for循环之下的。于是执行的时候语句就变成了.insert into ()values();insert into ()values();.....这种循环插入。 但是官方示例下批量插入是insert inint()values(),values(),values();这样循环插入才能正确获取自增id。我感觉应该是源码里的设置id值时不支持以前的多个insert方式。因为这样就等于执行很多次语句。效率比较低。这个问题应该是个小问题。但是困扰了我半天---还是太菜了。要多向大佬学习。看看源码。