码上敲享录 > Mybatis面试题 > 如何获取MyBatis中自增的主键

如何获取MyBatis中自增的主键

上一章章节目录下一章 2023-07-16已有173人阅读 评论(0)

在 MyBatis 中获取自增的主键可以通过以下几种方式:


1. 在插入操作后直接获取主键值:在执行插入操作后,可以通过调用插入语句所对应的 Mapper 方法的返回值获取插入的记录数。插入成功后,可以通过获取插入语句中的主键属性值或数据库自动生成的主键值,来获取自增的主键。


例如,假设有如下的插入语句:


```xml

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">

   insert into user (username, password) values (#{username}, #{password})

</insert>

```


在 Mapper 接口中定义对应的方法:


```java

@Insert("insertUser")

@Options(useGeneratedKeys = true, keyProperty = "id")

int insertUser(User user);

```


当执行 `insertUser` 方法后,可以通过 `user.getId()` 获取自增的主键值。


2. 使用 `<selectKey>` 元素获取主键:在插入语句中,可以使用 `<selectKey>` 元素来获取自增的主键。通过将 `<selectKey>` 元素的 `keyProperty` 设置为主键属性,将 `order="AFTER"`,然后在 `<selectKey>` 元素中指定获取自增主键的 SQL。


例如,假设有如下的插入语句:


```xml

<insert id="insertUser" parameterType="User">

   <selectKey keyProperty="id" resultType="java.lang.Long" order="AFTER">

       select last_insert_id()

   </selectKey>

   insert into user (username, password) values (#{username}, #{password})

</insert>

```


在 Mapper 接口中定义对应的方法:


```java

@Insert("insertUser")

@Options(useGeneratedKeys = true, keyProperty = "id")

int insertUser(User user);

```


同样,当执行 `insertUser` 方法后,可以通过 `user.getId()` 获取自增的主键值。


这些方法在 MyBatis 中都可以用来获取自增的主键。具体使用哪种方式取决于实际需求和数据库的支持情况。建议根据具体的数据库和项目需求选择最合适的方式来获取自增的主键。


向大家推荐《Activiti工作流实战教程》:https://xiaozhuanlan.com/activiti
0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交