Mybatis useGeneratedKeys无法返回主键问题

前言

最近同事遇到了一个问题,就是mybatis中使用useGeneratedKeys无法返回主键,确认keyProperty 设置的主键没有问题,代码也没有问题,后来经过查找,原来时mapper.java中的注解Param的问题

错误代码示例

正确示例

总结

使用useGeneratedKeys生成主键时

  (1)如果在DAO层使用@Param注解传递参数,则 keyProperty 属性 需要通过 “注解”+“主键id” 的格式,否则无法返回主键,例如 msg.MsgInnerId

  (2)如果在DAO层只有单个参数传递(不需要使用@Param注解穿传递参数),则 keyProperty 属性可以直接 用 “主键id” 来返回