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());

通过这种方式,我们可以很方便地获取到数据库自动生成的主键。

发表评论

后才能评论