私はこれが単純な問題だと感じますが、私が仕事をしてくれたものはありません。私は列挙型を持っています。なぜなら、Javaは列挙型のコンストラクタを持っていないからです。列挙型のコンストラクタなしで直接AA、AB、2Cを試しましたが、エラーが発生します。既存のenumではC( "2C")を追加しています。Java MyBatis列挙型文字列値
public enum TestEnum{
AA("AA"), AB("AB"), C("2C");
private String display;
private TestEnum(String display) {
this.display = display;
}
public String toString() {
return display;
}
public String getDisplay() {
return display;
}
public void setDisplay(String display) {
this.display = display;
}
public String getName() {
return display;
}
は今、私は、これは、既存され、マッパーへのparamの一つがTestEnumでマージを行うMyBatisのマッパーを持っています。これまでは、enumの値と文字列の値が同じであるため、これはうまくいきましたが、C( "2C")を追加しました。今はmybaitsを使用してテーブルに図2Cを挿入するが、それは常に
merge into text t
using (select #{id} as id from dual) d on (d.id = t.id)
when matched then
update set
appId = #{applId},
src = #{testEnum}
C.
挿入testEnumはCを挿入するので、私は私は何のゲッターが存在しないを与えた#{testEnum.toString()}にそれを変更しましたプロパティ名のtoString()エラーです。私は#{testEnum.display}と#{testEnum.name}を試しましたが、2人ともCを挿入していましたが、2人も挿入します。あなたはこれを扱う簡単な方法を知っていますか?このオブジェクトが多くの場所で使用されているため、TestEnumではなくStringを渡すようにモデルオブジェクトを変更したくありません。これはモデルオブジェクトを変更せずにmybatisマッパーで行うことができますか?あなたの助けのための
感謝:)あなたが必要なもの
驚くばかりです。ありがとうございます –