方式一:
使用 <insert> 标签的属性
<insert id="insert" parameterType="com.ahav.reserve.pojo.SummaryParagraphs" useGeneratedKeys="true" keyProperty="partId" keyColumn="part_id">
insert into summary_paragraphs (summary_id, part,
is_share, translation, initial_translation,
audio_pcm, addio_wav
)
values (#{summaryId,jdbcType=INTEGER}, #{part,jdbcType=INTEGER},
#{isShare,jdbcType=INTEGER}, #{translation,jdbcType=VARCHAR}, #{initialTranslation,jdbcType=VARCHAR},
#{audioPcm,jdbcType=VARCHAR}, #{addioWav,jdbcType=VARCHAR}
)
</insert>
方式二:
使用 <selectKey> 标签
<insert id="insertSelective" parameterType="com.ahav.reserve.pojo.SummaryParagraphs">
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="partId">
SELECT LAST_INSERT_ID()
</selectKey>
insert into summary_paragraphs
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="partId != null">
part_id,
</if>
<if test="summaryId != null">
summary_id,
</if>
<if test="part != null">
part,
</if>
<if test="isShare != null">
is_share,
</if>
<if test="translation != null">
translation,
</if>
<if test="initialTranslation != null">
initial_translation,
</if>
<if test="audioPcm != null">
audio_pcm,
</if>
<if test="addioWav != null">
addio_wav,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="partId != null">
#{partId,jdbcType=INTEGER},
</if>
<if test="summaryId != null">
#{summaryId,jdbcType=INTEGER},
</if>
<if test="part != null">
#{part,jdbcType=INTEGER},
</if>
<if test="isShare != null">
#{isShare,jdbcType=INTEGER},
</if>
<if test="translation != null">
#{translation,jdbcType=VARCHAR},
</if>
<if test="initialTranslation != null">
#{initialTranslation,jdbcType=VARCHAR},
</if>
<if test="audioPcm != null">
#{audioPcm,jdbcType=VARCHAR},
</if>
<if test="addioWav != null">
#{addioWav,jdbcType=VARCHAR},
</if>
</trim>
</insert>
使用返回的主键:
SummaryParagraphs summaryParagraphs = new SummaryParagraphs();
summaryParagraphs.setPart((duanshu++));
summaryParagraphs.setIsShare(0);
summaryParagraphs.setInitialTranslation(SystemConstant.FILE_URL + "recording" + uuidRecordingName+".txt");
summaryParagraphs.setAudioPcm(SystemConstant.FILE_URL + "recording" + uuidRecordingName+".pcm");
summaryParagraphs.setAddioWav(SystemConstant.FILE_URL + "recording" + uuidRecordingName+".wav");
System.out.println("添加前:" + summaryParagraphs.getPartId());
speech.summaryParagraphsMapper.insert(summaryParagraphs);
System.out.println("添加后:" + summaryParagraphs.getPartId());
打印结果:
添加前:null
添加后:11

本文探讨了在MyBatis中使用两种不同方法来生成插入记录后的主键:一种是利用<insert>标签的useGeneratedKeys属性,另一种是通过<selectKey>标签实现。详细展示了如何配置XML映射文件,并提供了代码示例,以确保正确获取自增主键。
880

被折叠的 条评论
为什么被折叠?



