【1】存储过程返回多个结果集,每个结果集多条数据的情况。resultMap="commonMap"。 这个和上面配置的<resultMap></resultMap>对应
<!-- 这个东西不知道有什么用,但是就是必须要,而且还不能和其它的xml里面的重复!!! -->
<resultMap type="java.util.HashMap" id="commonMap">
<result column="zhoulw" property="zhoulw" />
</resultMap>
<!-- 登陆测试入口 -->
<select id="login_test" parameterType="java.util.Map" statementType="CALLABLE" resultMap="commonMap,[有几个结果写几个commonMap]">
{CALL PRC_MOBILE_LOGIN_TEST(
#{personCode, mode=IN},
#{password, mode=IN}
)}
</select>
java: List<List<?>> login_test(Map<String, Object> map);
取第一个结果集:list.get(0)
取第二个结果集:(List<Map<String, Object>>)list.get(1)
【2】返回结果集,结果只有一条数据的情况。resultType="java.util.Map" 当然你也可以用上面的方法配置一个返回结果集。用List<Map<String, Object> map>来接收返回结果。
<!-- 通过人员id或openId获取人员信息 -->
<select id="queryPersonInfo" parameterType="java.util.Map" statementType="CALLABLE" resultType="java.util.Map">
{CALL PRC_MOBILE_QUERYPERSONINFO(
#{personId, mode=IN},
#{openId, mode=IN},
#{type, mode=IN}
)}
</select>
java: Map<String, Object> queryPersonInfo(Map<String, Object> map);
【3】返回参数,由于我的入参是map的形式,所以配置了resultType="java.util.Map",这里需要注意的是。返回参数会自动放在入参的map里面。也就是说获取那两个输出参数时,用map.get("errCode")和map.get("errMsg")即可 。
<select id="opearteCollectInfo" parameterType="java.util.Map" statementType="CALLABLE" resultType="java.util.Map">
{CALL PRC_MOBILE_OPERATECOLLECT(
#{personId, mode=IN},
#{commodityId, mode=IN},
#{operateType, mode=IN},
#{errCode, mode=OUT, jdbcType=VARCHAR},
#{errMsg, mode=OUT, jdbcType=VARCHAR}
)}
</select>
java: Map<String, Object> opearteCollectInfo(Map<String, Object> map);
【4】返回有参数和有只有一条结果集的情况。分配配置resultType="java.util.Map"和resultMap="java.util.Map"。这样会报错的!
invalid bound statement
其他有输出和结果集的情况,组合一下就可以了。注意resultMap="commonMap"这个。在配置
<resultMap type="java.util.HashMap" id="commonMap">
<result column="zhoulw" property="zhoulw" />
</resultMap>
时, 里面的result最少要写一个。随便编一个都可以。不需要对应。
我最后实际是通过遍历结果集拿数据的。没有做对应关系。
parameterType="java.util.Map" :入参形式为map
resultType="java.util.Map" : 返回结果形式,用于输出参数。也可用与count()时的结果【resultType="java.lang.Integer"】,需要按需配置
resultMap="commonMap" :返回结果集。需要配置commonMap