使用Mybatis在insert插入操作完成后,获得插入数据的主键ID是非常常见的需求。在Mybatis中,我们可以通过两种方式来实现这个需求:
1.使用selectKey标签
在Mybatis中,我们可以在insert语句中使用selectKey标签来获取自增主键的值。selectKey标签可用于定义获取新生成的主键的类型和值源,通常是数据库自动生成的主键值。
首先,我们需要在mapper.xml文件中定一个sql映射:
<insert id="insertUser" parameterType="com.example.User">
<selectKey keyColumn="id" keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user (username, password, sex, age) VALUES(#{username}, #{password}, #{sex}, #{age})
</insert>
这里我们在insert语句中使用selectKey标签,并定义了获取自增主键值的方式:SELECT LAST_INSERT_ID()。LAST_INSERT_ID是MySQL中用于返回最后一个插入行的自增ID值的函数。通过selectKey标签,在insert语句执行完成后,Mybatis会自动执行SELECT LAST_INSERT_ID()语句,并返回对应的值,然后将该值设置到传入的User对象的id属性中。
使用该insert语句的Java代码如下:
User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setSex("male");
user.setAge(18);
userMapper.insertUser(user); //插入用户信息
System.out.println(user.getId()); //打印自增主键
2.使用useGeneratedKeys属性
除了selectKey标签以外,Mybatis还支持通过useGeneratedKeys属性获取主键ID信息。useGeneratedKeys属性用于定义是否使用生成的主键值(例如自动增长的主键),默认情况下这个值是false,即不使用。如果设置为true,那么在插入完成后,Mybatis会自动将主键值设置到对应的属性中。
<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO user (username, password, sex, age) VALUES(#{username}, #{password}, #{sex}, #{age})
</insert>
上面这段代码中,我们使用useGeneratedKeys="true"来定义开启自动生成主键功能。同时,我们还定义了keyColumn和keyProperty两个属性,表示将自动生成主键的列名设置为id,将自动生成主键的值设置到User对象的id属性中。
使用该insert语句的Java代码如下:
User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setSex("male");
user.setAge(18);
userMapper.insertUser(user); //插入用户信息
System.out.println(user.getId()); //打印自增主键
当然,要使用这种方式,我们还需要在数据库中将id字段设置为自动生成主键,例如MySQL中可以使用AUTO_INCREMENT关键字来实现自动增长。
总结:
以上就是使用Mybatis在insert插入操作后返回主键ID的两种方式,使用起来非常简单。如果你碰到了需要获取主键ID的场景,可以尝试使用这两种方式来实现需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis 在 insert 插入操作后返回主键 id的操作方法 - Python技术站