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>