Mybatis中的useGeneratedKeys举例

MyBatis useGeneratedKeys 示例

useGeneratedKeys 是 MyBatis 中用于获取数据库自动生成的主键的配置。它通常与 insert 语句一起使用,以便在执行插入操作后,MyBatis 可以获取数据库生成的自增主键,并将其设置回 Java 对象的属性中。

数据库表结构

假设我们有一个 User 表,表结构如下:

CREATE TABLE User (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    email VARCHAR(50)
);

MyBatis 映射配置

假设你使用 MyBatis 的 XML 映射配置来处理 SQL 语句。

<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="true" keyProperty="id">
    INSERT INTO User (username, email)
    VALUES (#{username}, #{email})
</insert>
  • useGeneratedKeys="true":表示 MyBatis 会自动获取数据库生成的主键。
  • keyProperty="id":表示主键将映射到 Java 对象的 id 属性。

对应的 Java 类

public class User {
    private Long id;
    private String username;
    private String email;

    // Getters and setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

使用 MyBatis 插入记录

在 Java 代码中,你可以通过 MyBatis Mapper 接口调用插入方法:

public interface UserMapper {
    void insertUser(User user);
}

在你的业务逻辑代码中,你可以这样插入一个用户,并获取插入后的自增主键:

User user = new User();
user.setUsername("John Doe");
user.setEmail("john.doe@example.com");

// 调用 MyBatis Mapper 方法插入用户
userMapper.insertUser(user);

// 输出自动生成的 ID
System.out.println("Generated ID: " + user.getId());

在这个例子中,insertUser 方法执行完之后,user 对象的 id 属性将会被自动设置为数据库生成的自增主键。

总结

  • useGeneratedKeys="true":用于告诉 MyBatis 自动获取数据库生成的主键。
  • keyProperty="id":指定主键将填充到 Java 对象的哪个属性中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天进步2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值