2017-10-20 3 views
0

Mit folgenden Konfiguration:Mybatis select von id gibt immer null

POJO:

public class Student { 
    private int studentId; 
    private String name; 
    private String email; 
    // getters and setters 
} 

StudentMapper.xml

... 
<select id="findStudentById" parameterType="int" resultType="Student"> 
    SELECT student_id, name, email FROM Student WHERE studentId = #{studentId} 
</select> 
... 

StudentMapper Schnittstelle

public interface StudentMapper { 
    ... 
    Student findStudentById(int studentId); 
    ... 
} 

Das Problem i s, wenn ich laufe StudentService.findStudentById(studentId) (Ich habe es nicht hier gestellt) Ich habe das gleiche Anzahl (Null) jedes Mal (STUDENT_ID in meinem Tisch auto_generated und gestartet von 1 nicht 0)

EDIT: aber Andere Parameter (Name und E-Mail) werden ordnungsgemäß zurückgegeben

Antwort

1

MyBatis kann student_id => studentId nicht standardmäßig zuordnen. Sie haben hier mehrere Optionen: Konfigurieren Sie MyBatis, um den Unterstrich in camelCase zu transformieren, oder verwenden Sie resultMap.

Config Beispiel:

<configuration> 
    <settings> 
     <setting name="mapUnderscoreToCamelCase" value="true"/> 
    </settings> 
</configuration> 

Result map Beispiel:

<resultMap id="studentMap"> 
    <result property="studentId" column="student_id"/> 
    <result property="name" column="name"/> 
    <result property="email" column="email"/> 
</resultMap> 
+0

Diese Einstellung gibt SAXParserException – Humoyun

1

Sie haben uns nicht den Code anzeigen, die Daten in die Datenbank einfügen, also werde ich erraten, was Sie wahrscheinlich sind falsch machen. Obwohl Sie in Ihrer Tabelle eine Spalte auto_generated verwenden, senden Sie beim Einfügen der Student-Daten die int studentId an sie. Ich stelle mir auch vor, dass Sie keinen Wert dafür definieren, da Sie erwarten, dass es automatisch generiert wird, so dass MyBatis den Standardwert von Student_id, der 0 ist, hinzufügt.