SpringBoot3 -- 自定义ResultHandler

mybatis中使用map返回的默认格式为字段名为key,字段值为value,

但项目中遇到一个问题,就是查询出两列值,第一列作为key,第二列作为value,这样处理起来数据比较方便,于是需要自定义ResultHandler

先定义MapResultHandler

public class MapResultHandler implements ResultHandler {

    private final Map mapResults = new HashMap();

    @Override
    public void handleResult(ResultContext resultContext) {
        Map resultObject = (Map) resultContext.getResultObject();
        mapResults.put(resultObject.get("key"), resultObject.get("value"));
    }

    public Map getResults() {
        return mapResults;
    }
}

SQL中查询出来的两列数据重命名为'key'和'value',这样在自定义的ResultHandler中将重新根据键值对封装到mapResults中,

在service层需要注入SqlSessionTemplate,使用方式:

Map<String, Object> params = new HashMap<>();
params.put("id", id);
MapResultHandler resultHandler = new MapResultHandler();
sqlSessionTemplate.select(XXXMapper.class.getName() + ".getXxxById", params, resultHandler);
Map results = resultHandler.getResults(); // 所有对应类目的属性值id和value都已经缓存

select方法里需要传入mapper的全限定名+statement名称,查询参数,自定义的ResultHandler


猜你喜欢

转载自blog.csdn.net/qq_36781718/article/details/79985552