用mapper实现 插入数据的同时 返回数据库生成的id

 2023-04-09 17:09:35  阅读 0

以下是MyBatis中Mapper接口和Mapper XML文件中如何使用useGeneratedKeys属性开启自动生成ID功能,并返回数据库生成的ID的示例代码:

// 定义Mapper接口
public interface MyMapper {
    // 插入对象并返回自动生成的ID
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertMyObject(MyObject myObject);
}

<!-- 在Mapper XML文件中定义SQL语句 -->
<insert id="insertMyObject" parameterType="com.example.MyObject" useGeneratedKeys="true" keyProperty="id">
  INSERT INTO educlass (name, teacher) VALUES (#{name}, #{teacher})
</insert>

那么这个值怎么样去获取哪?

在上述示例中,MyMapper是Mapper接口,其中定义了一个名为insertMyObject的方法用于插入MyObject对象并返回生成的ID。在Mapper接口的方法上使用@Options注解,设置useGeneratedKeys属性为true来开启MyBatis的自动生成ID功能,设置keyProperty属性为id,表示将生成的ID设置回传入的MyObject对象的"id"属性中。

在Mapper XML文件中,可以通过<insert>元素来定义该插入语句,并使用useGeneratedKeys属性开启自动生成ID的功能,使用keyProperty属性指定自动生成的ID要设置回哪个JavaBean属性(例如id)。具体地,该插入语句就是按照前面所述的方法,将SQL语句放在<insert>元素内部并进行相应的列名和表名替换即可。

最后需要注意的是,在实际使用时,还需要配置好MyBatis的配置文件和相关的数据源信息等。如果插入操作成功,自动生成的ID将会被设置回传入的MyObject对象的"id"属性中。

如果在MyBatis中使用Mapper接口方式插入数据并返回自动生成ID,可以通过传入的对象实例获取到生成的ID。具体步骤如下:

  1. 在Mapper接口方法上添加@Options注解,设置useGeneratedKeys属性为true,并设置keyProperty属性为实体类中表示主键的属性名。例如:

public interface UserMapper {
    @Insert("INSERT INTO user(name, age) VALUES (#{name}, #{age})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertUser(User user);
}

调用Mapper接口方法插入数据时,直接将待插入的实体类对象作为参数传入。例如:

User user = new User();
user.setName("Alice");
user.setAge(20);
userMapper.insertUser(user);
System.out.println("插入成功,自动生成的ID是:" + user.getId());

User user = new User();
user.setName("Alice");
user.setAge(20);
userMapper.insertUser(user);
System.out.println("插入成功,自动生成的ID是:" + user.getId());

 

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码