Как получить ключ генерации с помощью mybatis в программе Springboot? - PullRequest
0 голосов
/ 03 января 2019

Я вставляю данные карты в 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» на карте является действительным числом в правильном направлении.Любое мнение будет оценено.

...