mybatis-book / book

MyBatis 从入门到精通
1.33k stars 579 forks source link

主键回显问题 #45

Open kojz opened 6 years ago

kojz commented 6 years ago
我使用数据库是MYSQL,实体类代码中的主键注解配置如下:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

数据库表注解如下 : id int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',

在调用mapper新增方法后,偶尔会出现如下错误(机率挺高的,偶尔又能新增成功,很奇怪),日志如下:

SELECT LAST_INSERT_ID() LIMIT ? Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml] SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana] Error selecting key or setting result to parameter object. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1

abel533 commented 6 years ago

看这里配置:https://github.com/abel533/Mapper/wiki/2.3-generatedvalue

另外。。。SELECT LAST_INSERT_ID() LIMIT ? 这里有 limit,说明你用错分页插件了。

你可能在 insert 前调用了一个分页方法。

abel533 commented 6 years ago

顺便把这儿的文档也看一遍:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md#3-pagehelper-%E5%AE%89%E5%85%A8%E8%B0%83%E7%94%A8

kojz commented 6 years ago

我仔细检查了,在insert前,没有做pagehelper的操作,比较奇怪的是:这个bug是偶尔出现,有时insert又没错。我使用的版本如下:

tk.mybatis mapper-spring-boot-starter 2.0.2
       <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.1</version>
        </dependency>

参数配置是:

**

}

zscomehuyue commented 5 years ago

试试 supportMethodsArguments=false

bjmajiancheng commented 5 years ago

最后怎么解决的啊,我也遇到这个问题了

wangdxsun commented 4 years ago

PageHelper.clearPage(); 清空

lifei1234 commented 3 years ago

问题解决了吗?我也碰到了