为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM Database Server 64 V8--03134284094-20230927-203585-20067 Pack1
【操作系统】:win10
【CPU】: x86平台
【mybatis-plus】:3.5.2
【SpringBoot】:2.3.4.RELEASE
【问题描述】*:
采用数据库中自带的DmJdbcDriver18.jar(版本为8.1.3.62,日期2023.09.20),发现在使用mybatis-plus自带的insert方法时,未返回实体的主键,在自己写mapper<insert id="insert" keyProperty="id" useGeneratedKeys="true" keyColumn="id">,也不会返回。(数据库表的主键是自增的AUTO_INCREMENT,且已经指定id为AUTO);
但在用官方文档中8.1.1.193版本驱动时,可以正常返回id主键,但由于项目中有使用sharding-jdbc4.1.1,该版本的驱动与sharding-jdbc无法适配(初始化数据源时会报错,getDatabaseMinorVersion出错Number转换异常,故该版本不行)
后面又试了其他版本驱动(8.1.2.141、8.1.2.192、8.1.2.79、8.1.3.62)皆无法返回id。
若在insert中写selectKey,倒是可以返回id,但原本项目大量使用mybatis-plus自带的insert方法,故不大合适。
<selectKey resultType="long" keyProperty="id" order="AFTER">
select @@identity
</selectKey>
麻烦技术人员帮忙看下是否有解决方案,谢谢了
附录:
8.1.3.62insert未返回id
8.1.1.193insert有返回id
8.1.1.193shardingjdbc问题
可以参考这几个例子
可以测试下,主键字段大写或者小写的情况下是否都不返回