有条件地在MyBatis </selectkey>中执行<selectkey>

时间:2014-03-02 18:30:46

标签: mybatis

我有这个问题。当提供的bookTypeId为 null 时,我需要执行 selectKey 以向我提供ID 。可以吗?

这是插入函数映射:

<insert id="insert" parameterType="BookType">
    <selectKey resultType="Integer" keyProperty="bookTypeId" order="BEFORE">
        SELECT nextval('seq_book_type')
    </selectKey>
    INSERT INTO book_type(
        book_type_id,
        book_type_desc
    )
    VALUES(
        #{bookTypeId},
        #{bookTypeDesc}
    )
</insert>

1 个答案:

答案 0 :(得分:5)

这毕竟是我所做的:

<insert id="insert" parameterType="BookType">
    <selectKey resultType="Integer" keyProperty="bookTypeId" order="BEFORE">
        <if test="bookTypeId == null">SELECT nextval('seq_book_type')</if>
        <if test="bookTypeId != null">SELECT #{bookTypeId}</if>
    </selectKey>
    INSERT INTO book_type(
        book_type_id,
        book_type_desc
    )
    VALUES(
        #{bookTypeId},
        #{bookTypeDesc}
    )
</insert>

它就像一个魅力。请有myBatis经验的人,让我知道是否有比这更好的方法。