四、查询结果映射
在MyBatis中,查询结果通常是将数据库查询结果映射到Java对象中,可以使用resultMap元素来定义查询结果映射规则。例如:
代码语言:javascript复制<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="gender" column="gender"/>
</resultMap>
<select id="getUserById" parameterType="int" resultMap="userMap">
select * from user where id = #{id}
</select>
在上面的代码中,使用resultMap元素定义了查询结果映射规则,id元素用于定义主键映射规则,result元素用于定义普通属性映射规则。在getUserById查询语句中使用resultMap属性引用了userMap结果映射规则。
五、查询结果处理
在MyBatis中,查询结果处理方式有多种,其中常见的方式如下:
返回Java对象
返回Java对象是指将查询结果封装为Java对象返回,例如:
代码语言:javascript复制User user = sqlSession.selectOne("getUserById", 1);
在上面的代码中,将查询结果封装为User对象返回。
返回List
返回List是指将查询结果封装为List对象返回,例如:
代码语言:javascript复制List<User> userList = sqlSession.selectList("getUserListByName", "Tom");
在上面的代码中,将查询结果封装为List<User>对象返回。
返回Map
返回Map是指将查询结果封装为Map对象返回,例如:
代码语言:javascript复制User user = sqlSession.selectOne("getUserById", 1);
System.out.println(user.getName());
List<User> userList = sqlSession.selectList("getUserListByName", "Tom");
for (User u : userList) {
System.out.println(u.getName());
}
Map<Integer, User> userMap = sqlSession.selectMap("getUserMap", "id");
for (Map.Entry<Integer, User> entry : userMap.entrySet()) {
System.out.println(entry.getKey() ": " entry.getValue().getName());
}
在上面的代码中,首先使用selectOne方法将id为1的用户查询出来,并打印出用户的名字;然后使用selectList方法将名字为Tom的用户列表查询出来,并逐个打印出用户的名字;最后使用selectMap方法将所有用户按照id为key进行封装,并打印出所有用户的名字。