2

MyBatisを使用してMySQL DBにクラスインスタンスを書いています

// I have no control over how this java class is laid out -.-
class Hello {
    boolean isFriendly
}

私のMyBatisマッパーは次のようになります

<insert id="doHello" parameterType="Hello">
    insert into hello_table (
        is_friendly   --this is a varchar(1) btw
    )
    values (
      #{isFriendly}
    )
 </insert>

問題は、値を 0 または 1 として DB に挿入することですが、それを「N」または「Y」にする必要があり、Java を変更する選択肢がありません。

コードをできるだけ最小限に抑えようとしており、理想的には Mybatis Mapper に何かを追加したいと考えています

私は次のようなことを試しました

 #{isFriendly,jdbcType=Boolean}

しかし、うまくいきませんでした

4

3 に答える 3

4

MyBatis typeHandler はそれを行う適切な方法です。

型ハンドラーを実装して、任意の SQL ステートメントで使用できます。

#{isFriendly, typeHandler=YesNoBooleanTypeHandler}

詳細については、MyBatis Java Boolean to Sql enum を参照してください。

于 2013-10-07T11:00:30.090 に答える
2

挿入ステートメントを変更します

insert into hello_table (
        is_friendly
    )values (${isFriendly=="0"?"'N'":"'Y'"})
于 2013-09-29T01:01:11.080 に答える