Mybatisコードが列挙型(バージョン:3.4.4)を読み込みません。Mybatis enum idで選択
私はデータベースにINT(11)タイプのcartypeフィールドを持つテーブルを持っています。 Javaでは 私は車の種類を処理するためにENUMを作成しました:
<select id="selectCar" parameterType="Car" resultMap="carResultMap">
SELECT * FROM Cars WHERE car_name="#{carName}";
</select>
<resultMap id="carResultMap" type="Car">
<id property="id" column="car_name"/>
<result property="carType" column="cartype"/>
</resultMap>
最後に私のBeanは以下のようになります:
public enum CarType {
SEDAN(1), LIMUSIN(2), WAGON(3);
private int id;
CarType(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
カーマッパーXMLは、この(何もすべてのデータが含まれていない)のように見えます
public class Car {
private Integer id;
private CarType carType;
}
Beanにはゲッターとセッターも含まれています。
私はJavaで車を取得しようとすると、それは次の例外をthorws:java.lang.IllegalArgumentExceptionが:によって引き起こさ ません列挙型定数org.data.bean.CarType.1 java.lang.Enum.valueOfでORGでorg.apache.ibatis.type.EnumTypeHandler.getNullableResult(EnumTypeHandler.java:26) でorg.apache.ibatis.type.EnumTypeHandler.getNullableResultで(Enum.java:238) (EnumTypeHandler.java:49) .apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:66)
とMaven:ので(私もサンプルタイプハンドラの定義を含めています)のようなのJavaTypeパラメータを追加します。それは簡単に実行することができます。私はまたそれが列挙型の名前だと思う(例えば、 "SEDAN"はIDではなくデータベースに格納する必要があります) – DPM
idの代わりにenum名で作業してくれてありがとう。 select文では、名前のためにUPPER()メソッドを使用します。 – stuckhelper