2017-10-20 200 views
0

隨着以下配置:MyBatis的由ID選擇總是返回零

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接口

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

問題我每當我跑StudentService.findStudentById(studentId)我沒有把它放在這裏)■我的相同數量(零)每次都得到了(在我的表student_id數據被AUTO_GENERATED,並從1開始不爲0)

編輯:但其他參數(名稱和電子郵件)已正確返回

回答

1

默認情況下,MyBatis無法映射student_id => studentId。這裏有多個選項:配置MyBatis將下劃線轉換爲camelCase或使用resultMap

Config例如:

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

Result map例如:

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

此設置給出了SAXParserException – Humoyun

1

你沒有告訴我們,在數據庫中插入數據的代碼,所以我要猜你是什麼可能做錯了。雖然您在表中使用auto_generated列,但在插入Student數據時,您將發送int studentId給它。我也想象你沒有爲它定義任何值,因爲你期望它是自動生成的,所以MyBatis會將int的默認值添加到student_id,它是0.