假如说现在数据表里两列,列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
需要说明的是 :
- 方法select 第一个参数是xml命名空间加xml标签id ,第二个参数是结果处理器对象。 根据mybatis强烈建议sqlSesstion要关闭会话。 至于sqlSesstionFactory可以通过DI spring上下文获得自己项目的 sqlSesstionFactory。