Mein mybatis-Code lädt nicht enum-Typ (Version: 3.4.4).Mybatis enum nach ID auswählen
In Mysql Datenbank habe ich eine Tabelle mit Cartype Feld, das ein INT (11) Typ ist. In Java habe ich eine ENUM für Autotypen Handhabung:
public enum CarType {
SEDAN(1), LIMUSIN(2), WAGON(3);
private int id;
CarType(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
Car-Mapper xml sieht wie folgt aus (enthält nicht alle Daten):
<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>
Schließlich meine Bohne wie die Anhänger aussehen:
public class Car {
private Integer id;
private CarType carType;
}
Die Bean enthält auch Getter und Setter.
Wenn ich versuche, das Auto in Java, um es thorws die folgende Ausnahme: Verursacht durch: java.lang.IllegalArgumentException: Keine Aufzählungskonstante org.data.bean.CarType.1 bei java.lang.Enum.valueOf (Enum.java:238) bei org.apache.ibatis.type.EnumTypeHandler.getNullableResult (EnumTypeHandler.java:49) bei org.apache.ibatis.type.EnumTypeHandler.getNullableResult (EnumTypeHandler.java:26) bei org .apache.ibatis.type.BaseTypeHandler.getResult (BaseTypeHandler.java:66)
Sie könnten versuchen, Gebäude und verbinden hier ein minimales, komplettes Beispiel mit -für h2 Datenbank Beispiel- (im Speicher) und Maven so kann es leicht gelaufen werden. Ich denke auch, dass es der Name des Enums ist (also zum Beispiel "SEDAN", das in der Datenbank gespeichert werden muss, nicht die ID) – DPM
Danke, es ist Arbeit mit dem Namen enum anstelle von id. In SELECT-Anweisung sollte die UPPER() -Methode für den Namen verwendet werden, es ist ein kleines Plus für die Lösung. – stuckhelper