/ / MyBatis select by id gibt immer null zurück - Java, MySQL, Orm, MyBatis

MyBatis select by id gibt immer null zurück - java, mysql, orm, mybatis

Mit folgender Konfiguration:

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-Oberfläche

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

Das Problem ist, wann immer ich renne StudentService.findStudentById(studentId) (Ich habe es nicht hierher gestellt) Ich habe das gleiche Nummer (Null) jedes Mal (student_id in meiner Tabelle wird automatisch generiert und von 1 bis 0 gestartet)

BEARBEITEN: aber andere Parameter (Name und E-Mail) werden korrekt zurückgegeben

Antworten:

1 für die Antwort № 1

Sie haben uns nicht den Code gezeigt, in den Daten eingefügt wurdenWenn Sie die Student-Daten einfügen, senden Sie die int studentId an die Datenbank. Ich kann mir auch vorstellen, dass dies der Fall ist Sie definieren keinen Wert dafür, da Sie erwarten, dass er automatisch generiert wird. Deshalb fügt MyBatis der student_id den Standardwert eines int hinzu, der 0 ist.


1 für die Antwort № 2

MyBatis kann nicht zugeordnet werden student_id => studentId standardmäßig. Hier haben Sie mehrere Möglichkeiten: Konfigurieren Sie MyBatis so, dass der Unterstrich in camelCase umgewandelt wird, oder verwenden Sie a resultMap.

Konfig Beispiel:

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

Ergebniskarte Beispiel:

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