Я вставляю данные карты в postgresql, используя mybatis в программе Springboot, и я хочу, чтобы mybatis вернул сгенерированный ключ.Ключ автоматически генерируется последовательностью и имеет имя «corp_id».Но возникает проблема, которая меня смущает.Вот правильный путь:
<insert id="addOrUpdCorp" parameterType="java.util.Map" useGeneratedKeys="true" keyProperty="corp_id">
insert into t_corporation
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="corp_name != null and corp_name != ''">
corp_name,
</if>
<if test="corp_note != null and corp_note != ''">
corp_note,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="corp_name != null and corp_name != ''">
#{corp_name},
</if>
<if test="corp_note != null and corp_note != ''">
#{corp_note},
</if>
</trim>
</insert>
А вот неправильный путь:
<insert id="addOrUpdCorp" parameterType="java.util.Map" useGeneratedKeys="true" keyProperty="corp_id">
<selectKey keyProperty="count" resultType="java.lang.Integer" order="BEFORE">
select count(corp_id) from t_corporation where corp_id = #{corp_id}
</selectKey>
<if test="count > 0">
update t_corporation
<set>
<if test="corp_name != null and corp_name != ''">
corp_name = #{corp_name},
</if>
<if test="corp_note != null and corp_note != ''">
corp_note = #{corp_note},
</if>
</set>
where corp_id = #{corp_id}
</if>
<if test="count == 0">
insert into t_corporation
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="corp_name != null and corp_name != ''">
corp_name,
</if>
<if test="corp_note != null and corp_note != ''">
corp_note,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="corp_name != null and corp_name != ''">
#{corp_name},
</if>
<if test="corp_note != null and corp_note != ''">
#{corp_note},
</if>
</trim>
</if>
</insert>
Почему значение «corp_id» на карте (после возврата метода mapper) равно нулюневерно выше?Я просто хочу использовать операцию обновления и вставки вместе.Кроме того, значение «corp_id» на карте является действительным числом в правильном направлении.Любое мнение будет оценено.