使用以下配置:
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在我的table是auto_generated并从1开始而不是0)
编辑:但其他参数(姓名和电子邮件)已正确返回
答案 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>
答案 1 :(得分:1)
您没有向我们展示在数据库中插入数据的代码,因此我会猜测您可能做错了什么。虽然您在表中使用auto_generated列,但在插入Student数据时,您将向其发送int studentId。我还想象你没有为它定义任何值,因为你期望它是自动生成的,所以MyBatis会将一个int的默认值添加到student_id,即0。