Mybatis是一个优秀的ORM框架,常见的查询结果是将数据封装在POJO类中,但有时我们还需要查询结果封装到Map
1. 返回Map类型的Mapper接口方法
我们可以定义一个返回Map
1.1 定义Mapper接口
public interface UserMapper {
Map<String,Object> getUserById(String id);
}
1.2 编写Mapper XML配置文件
<select id="getUserById" resultType="java.util.Map">
select * from user where id=#{id}
</select>
1.3 使用Mapper接口方法进行查询
Map<String,Object> user = userMapper.getUserById("1");
2. 自定义ResultHandler返回Map类型
除了上述方法,我们还可以使用自定义的ResultHandler来返回Map
2.1 自定义ResultHandler
public class MapResultHandler implements ResultHandler<Map<String,Object>> {
private final Map<String, Object> result = new HashMap<>();
@Override
public void handleResult(ResultContext<? extends Map<String, Object>> resultContext) {
Map<String,Object> resultMap = resultContext.getResultObject();
// 将Map<String,Object>类型的查询结果封装到result中
result.putAll(resultMap);
}
public Map<String,Object> getResult() {
return result;
}
}
2.2 使用自定义ResultHandler进行查询
MapResultHandler resultHandler = new MapResultHandler();
sqlSession.select("getUserById", "1", resultHandler);
Map<String,Object> user = resultHandler.getResult();
3. 示例
下面是一个完整的示例:
3.1 Mapper接口
public interface UserMapper {
Map<String,Object> getUserById(String id);
}
3.2 Mapper XML配置文件
<select id="getUserById" resultType="java.util.Map">
select * from user where id=#{id}
</select>
3.3 测试代码
SqlSession sqlSession = MybatisUtil.getSqlSessionFactory().openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Map<String,Object> user = userMapper.getUserById("1");
System.out.println(user);
sqlSession.close();
3.4 输出结果
{ID=1, USERNAME=张三, PASSWORD=123456}
到此为止,我们已经讲解了使用mybatis查询返回Map
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis查询返回Map