我正在使用 MySQL 5.5.46
以及 MyBatis 3.3
和 Spring 4.2
。我有一个表,其主键列的类型为 VARCHAR(32)
。在我的映射文件中,我有这样的声明。请注意,我使用 MySql 的 uuid()
自动生成 ID。然后我如何获取此 ID 并将其填充到返回的对象中?我正在尝试 LAST_INSERT_ID()
但那不起作用......
<insert id="insertMyObject" parameterType="org.mainco.myproject.domain.MyObject" keyProperty="id" keyColumn="id">
insert into cb_myproject_sync_entity_link(id, links_self, links_schools, links_teachers, links_students, links_sections, links_grade_levels, links_contacts)
values(replace(uuid(), '-', ''),#{linksSelf}, #{linksSchools}, #{linksTeachers}, #{linksStudents}, #{linksSections}, #{linksGradeLevels}, #{linksContacts})
<selectKey keyProperty="id" resultType="String" order="AFTER">SELECT LAST_INSERT_ID();</selectKey>
</insert>
请您参考如下方法:
尝试在 mybatis 配置中使用此设置:
<settings>
<setting name="useGeneratedKeys" value="true"/>
</settings>