mybatis的输出结果
mybatis执行了sql语句,得到Java对象
resultType
1)resultType结果类型,指sql语句执行完毕后,数据转为的Java对象,java类型是任意的。
resultType结果类型的值:1.类型的全限定名称;2.类型的别名,例如:java.lang.Integer 别名是int
处理方式:
1.mybatis执行sql语句,然后mybatis调用类的无参构造方法,创建对象。
2.mybatis把ResultSet执行列值赋给同名的属性
<select id="selectStudents" resultType="com.domain.Student">
select id,age,name,email from Student order by id
</select>
//对等jdbc
ResultSet rs = executeQuery("select id,name,age,email from Student order by id");
while(rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
}
2)定义自定义类型的别名
1.在mybatis主配置文件中定义,使<typeAlias>
定义别名
2.可以在resultType中使用自定义的别名
返回值是map:
1.列名使map的key,列值是map的value。
2.只能最多返回一行记录,多余一行都会报错。
resultMap
resulteMap:结果映射,指定列名和Java对象的属性对应关系。
1.你自定义列值赋值给哪个属性
2.当你的列名和属性名不一样时,一定使用resultMap
//StudentDao.java
List<Student> selectAllStudents();
//StudentMapper.xml
/**
* 主键用id,其他键用result
*/
<resultMap id="studentMap" type="com.domain.Student" >
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="email" property="email" />
<result column="age" property="age" />
</resultMap>
<select id="selectAllStudents" resultMap="studentMap">
select id,name,email,age from Student
</select>
//test.java
@org.junit.Test
public void testMap(){
SqlSession session = MybatisUtil.getSqlSession();
StudentDao dao = session.getMapper(StudentDao.class);
List<Student> students = dao.selectAllStudents();
for (Student stu: students){
System.out.println(stu);
}
session.close();
}
当列名和属性名不一样时,必须使用resultMap