有些数据库表使用了自增主键,在插入数据后,需要立刻查询这条数据,或者需要将此纪录关联到其他表,就需要用到插入的这条记录的ID,MyBatis默认情况下返回的影响记录的行数,可以更改配置,使得能够返回自动生成的主键。 方法很简单,在Maper文件中添加以下几个配置即可。 ``` // SQL ``` `useGeneratedKeys`指明使用使用JDBC的`getGenereatedKeys`方法获取主键并赋值到`keyProperty`设置的领域模型属性中。 `keyProperty`指明的是领域模型中的属性,`keyColumn`通常可以省略,在数据库字段名称与领域模型中属性名称不一致时,可以通过此参数单独指定。 通过这样的设定,MyBatis在插入记录后,会将自动生成的主键信息,通过Set方法应用到给定的领域模型参数上,我们就可以通过Get方法获取生成的自增ID。 例如: ``` User user = new User(); user.setName("admin"); user.setAge(22); user.setSex(1); userMapper.insertUser(user); // 获取插入后自动生成的ID Long id = user.getId(); Loading... 有些数据库表使用了自增主键,在插入数据后,需要立刻查询这条数据,或者需要将此纪录关联到其他表,就需要用到插入的这条记录的ID,MyBatis默认情况下返回的影响记录的行数,可以更改配置,使得能够返回自动生成的主键。 方法很简单,在Maper文件中添加以下几个配置即可。 ``` <insert id="insertUser" parameterType="com.simaek.domain.User" useGeneratedKeys="true" keyProperty="id" keyColumn="id"> // SQL </insert> ``` `useGeneratedKeys`指明使用使用JDBC的`getGenereatedKeys`方法获取主键并赋值到`keyProperty`设置的领域模型属性中。 `keyProperty`指明的是领域模型中的属性,`keyColumn`通常可以省略,在数据库字段名称与领域模型中属性名称不一致时,可以通过此参数单独指定。 通过这样的设定,MyBatis在插入记录后,会将自动生成的主键信息,通过Set方法应用到给定的领域模型参数上,我们就可以通过Get方法获取生成的自增ID。 例如: ``` User user = new User(); user.setName("admin"); user.setAge(22); user.setSex(1); userMapper.insertUser(user); // 获取插入后自动生成的ID Long id = user.getId(); 最后修改:2023 年 08 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏