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());
}