mybatis将数据库两列映射为键值对(Map)

1,822 阅读1分钟

假如说现在数据表里两列,列a,b,现在想把这张表里N条数据映射到一个Map里返回应该怎么做?

答:如果自己处理会有点繁琐,我们换一种方式。

我们通过实现mybatis的结果处理器接口,自定义一个结果处理器,用来封装mybatis的返回数据,像这样。

首先说明一下里边唯一Override的方法handleResult,mybatis sqlSesstion调用sql后会回调这个方法,所以我们重写这个方法将结果处理成我们想要的格式就可以了。其中的"key" 和 “value”对应xml文件里自定义resultMap的property属性。

  <resultMap id="abcd" type="HashMap">    
  <result property="key" column="a"/>    
  <result property="value" column="b"/>
  </resultMap>
<select id="a" resultMap="abcd">       
 select "a","b"from "table";    
</select>

调用的话,像这样,我们拿到sqlSesstion指定结果处理器用其去执行sql

需要说明的是 : 

  1. 方法select 第一个参数是xml命名空间加xml标签id ,第二个参数是结果处理器对象。 根据mybatis强烈建议sqlSesstion要关闭会话。 至于sqlSesstionFactory可以通过DI spring上下文获得自己项目的                                          sqlSesstionFactory。