需求
mybatis 在新增之后怎么也获取不到自增主键,通过不段的摸索原来是姿势不对,记录一下希望能帮助下一位采坑的同学
方式一
映射方式
<-- xml 映射的方式 -->
<insert id="insert" parametertype="com.kebi.user" usegeneratedkeys="true" keyproperty="id" keycolumn="id">
insert into user (
username, password
) values (
#{username}, #{password}
)
</insert>
| 属性 | 描述 |
|---|---|
| usegeneratedkeys | 为 true 则返回主键的值 |
| keyproperty | 实体类中属性名 |
| keycolumn | 数据库主键字段名 如果和实体属性名一样可以不用写 |
private usertmapper usermapper;
user user = new user();
user.setusername("name");
user.setpassword("123")
usermapper.insert(user);
system.out.println("获取自增主键:"+ user.getid());
方式二
selectkey 的方式
<-- xml 映射的方式 -->
<insert id="insert" parametertype="com.kebi.user">
<selectkey resulttype="int" order="after" keyproperty="id" keycolumn="id">
select last_insert_id()
</selectkey>
insert into users (
username, password
) values (
#{username}, #{password}
)
</insert>
| 属性 | 描述 |
|---|---|
| resulttype | 结果类型 |
| keyproperty | 实体类中属性名 |
| keycolumn | 数据库主键字段名 |
| order | 这可以被设置为 before 或 after。如果设置为 before,那么它会首先选择主键,设置 keyproperty 然后执行插入语句。如果设置为 after,那么先执行插入语句,然后是 selectkey 元素 - 这和像 oracle 的数据库相似,在插入语句内部可能有嵌入索引调用。 |
| statementtype | mybatis 支持 statement、prepared 和 callable 语句的映射类型,分别代表 preparedstatement 和 callablestatement 类型 |
到此这篇关于mybatis insert 返回自增主键的实现示例的文章就介绍到这了,更多相关mybatis insert 返回自增主键内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论