在 MyBatis 中,获取自增 ID 主要有两个方法:
- 在 SQL 中增加两个属性,useGeneratedKeys 和 keyProperty
- 增加 selectKey 语句块,执行自定义 SQL 获取自增 ID
针对这几种方法,有几个小问题需要注意:
- useGeneratedKeys 是基于 JDBC 的 Prepared Statement 实现的,具体做法是调用 JDBC 的 getGeneratedKeys 方法,在 Prepared Statement 对象中取相应的值。当 DB 为 MySQL 的时候,会在响应时返回相应的自增字段值。但是,在某些实现 DB 分库分表的 Proxy 中,由于涉及 SQL 转换、重写的问题,可能对 Prepared Statement 的支持并不完整,导致 useGeneratedKeys 选项无法正常返回对应的自增 (更多…)