MyBatis 如何获取自动生成的主键id?
在MyBatis中,如果你想获取数据库生成的主键,你可以在<insert>
标签中使用useGeneratedKeys
属性和keyProperty
属性。useGeneratedKeys
属性设置为true
,MyBatis就会使用JDBC的getGeneratedKeys
方法来获取数据库产生的主键。keyProperty
属性则用来指定这个生成的主键应该赋值给哪个属性。
例如,假设我们有一个user
表,其中的id
字段是自增的主键,我们可以这样插入数据并获取生成的主键:
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
在上面的例子中,如果我们的User
对象有一个id
属性,那么当我们插入一个新的用户后,MyBatis就会将生成的主键赋值给这个id
属性。
在Java代码中,我们可以这样使用:
User user = new User();
user.setName("Tom");
user.setAge(25);
// insertUser 是映射文件中定义的语句的ID
sqlSession.insert("insertUser", user);
// 由于 keyProperty 设置为 "id",这个id就是数据库生成的主键
System.out.println(user.getId());
通过这种方式,我们可以很方便地获取到数据库自动生成的主键。