2017-10-20 33 views
0

Avec la configuration suivante:mybatis sélectionnez par id retourne toujours zéro

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> 
... 

interface StudentMapper

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

Le problème i s à chaque fois que je lance StudentService.findStudentById(studentId) (je n'ai pas mis ici) je me suis le même nombre (zéro) chaque fois (student_id dans ma table est auto_generated et a commencé de 1 non 0)

EDIT: mais les autres paramètres (nom et e-mail) sont renvoyés correctement

Répondre

1

MyBatis ne peut pas mapper student_id => studentId par défaut. Vous avez plusieurs options ici: configurez MyBatis pour transformer le trait de soulignement en camelCase ou utilisez un resultMap.

Config exemple:

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

Result map exemple:

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

ce paramètre donne SAXParserException – Humoyun

1

Vous ne nous montrent le code qui insérer des données dans la base de données, donc je vais deviner ce que vous êtes probablement mal faire. Bien que vous utilisiez une colonne auto_generated dans votre table, lorsque vous insérez les données Student, vous lui envoyez l'ID studentId. J'imagine aussi que vous ne définissez aucune valeur pour cela, puisque vous attendez qu'il soit généré automatiquement, donc MyBatis va ajouter la valeur par défaut d'un int à student_id, qui est 0.