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 setterspublic 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 对象的哪个属性中。