对于mybatis调用SQL Server 2005存储过程返回多个结果集的情况进行处理【备忘】

1.1.接收多个结果集,xml文件内配置多个resultMap设置列名对应属性名,最后在查询结果集内添加多个map
eg:
<select id="getTest" statementType="CALLABLE" resultMap="StudentMap,CourseMap">
//TODO
</select>

1.2.只取多个结果集的一个,xml文件内配置多个resultMap设置列名对应属性名,最后在查询结果集内添加相关map。需注意的是,不可用resultType进行配置,当有多个结果集时会SQL执行异常
eg:
<select id="getStudent"  statementType="CALLABLE" resultMap="StudentMap">
    exec SelectTwoSet //TODO
</select>

error_egg:
<select id="getStudent"  statementType="CALLABLE" resultType="com.ysl.pianoroom.test.Student">
    exec SelectTwoSet//TODO
</select>

注:假设结果集为两个,获取结果集的一个时,当获取结果集顺序的第2个时会出现不能获取。

---------------------------------------------------其它内容-----------------------------------------------------------------

测试存储过程:

ALTER PROCEDURE [dbo].[SelectTwoSet]

AS
BEGIN
    select '20181031' emp_id, '小加' emp_name, '14_2' depart_id
    select 'c001' course_id, 80 'score'
end

mapper.java:
//多个结果集
List<List<?>> getTest();
//一个结果集
List<Student> getStudent();

 Junit 测试方法: 

    @Test
    public void testGetTest() {
        List<List<?>> map = qRCodeMapper.getTest();
        Map<String, List<?>> maps = new HashMap<String, List<?>>();
        if (map!=null && map.size() > 1) {//结果为2个结果集
            maps.put("oneList", (List<Student>) map.get(0));
            maps.put("twoList", (List<Course>) map.get(1));
        }
        Student student = (Student) maps.get("oneList").get(0);
        System.out.println(student.toString());
    }
    
    @Test
    public void getStudent(){
        List<Student> students = qRCodeMapper.getStudent();
        System.out.println(students.get(0).toString());
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值