MyBatis查询功能(三)

2023-05-15 13:30:02 浏览数 (1)

四、查询结果映射

在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进行封装,并打印出所有用户的名字。

0 人点赞