получить первичный ключ записи обновления не удалось при использовании getGeneratedKeys - MyBatis - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь получить первичный ключ записи обновления, используя этот способ в MyBatis (v3.5.1):

    <update id="updateForFreeSeat"
            parameterType="com.sportswin.soa.room.model.entity.RoomSeat"
            useGeneratedKeys="true"
            keyProperty="id"
            keyColumn="id">
        update r_room_seat
        set status = 1
        where room_play_id = #{roomPlayId,jdbcType=BIGINT}
        limit 1
    </update>

и Mapper. java определяют следующим образом:

int updateForFreeSeat(RoomSeat roomSeat);

И теперь я получаю идентификатор записи обновления не удалось, идентификатор - это мой первичный ключ. Это мой отладочный вывод:

enter image description here

что мне делать, чтобы получить идентификатор записи обновления?

1 Ответ

0 голосов
/ 20 марта 2020

Я реализую это так:

    <select id="updateForFreeSeat"
            parameterType="com.sportswin.soa.room.model.entity.RoomSeat" resultType="com.sportswin.soa.room.model.entity.RoomSeat">
        set @update_id := 0;
        UPDATE r_room_seat SET status = #{record.status,jdbcType=INTEGER},
        id = (SELECT @update_id := id),
        user_id = #{record.userId,jdbcType=BIGINT},
        robot_flag = #{record.robotFlag,jdbcType=TINYINT}
        WHERE room_play_id = #{record.roomPlayId,jdbcType=BIGINT} and status = 0
        LIMIT 1;
        select <include refid="Base_Column_List" /> from r_room_seat where id = @update_id;
    </select>

и это мой маппер:

RoomSeat updateForFreeSeat(@Param(value = "record")RoomSeat roomSeat);

Я вдохновляюсь этим вопросом Как получить идентификатор последней обновленной строки в MySQL?

...