Mybatis 插入数据后返回自增主键ID失败总结

问题代码如下


void insert(@param("user")User user);

 <!-- 插入数据:返回记录主键id值 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id"  keyColumn="id">
		insert  into t_user (name,age) values (#{user.name},#{user.age})
</insert>

执行sql后,user.getId()并没有返回自增ID,自以为自增配置也没问题

  • useGeneratedKeys为true,用来设置返回主键id的值,
  • keyProperty 代表 java对象成员属性名
  • keyColumn 代表数据库记录主键字段

最后实践发现因为insert方法钟使用了@param注解,keyProperty 应该设置为user.id

r如下

 <!-- 插入数据:返回记录主键id值 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="user.id"  keyColumn="id">
		insert  into t_user (name,age) values (#{user.name},#{user.age})
</insert>

或者修改方法和sql


void insert(User user);
 <!-- 插入数据:返回记录主键id值 -->
<insert id="insert" useGeneratedKeys="true" keyProperty="id"  keyColumn="id">
		insert  into t_user (name,age) values (#{name},#{age})
</insert>