一、返回Map类型
- 如果查询的结果是一条,我们可以把查询的数据以{表字段名, 对应的值}方式存入到Map中。
- 注解@MapKey:
- Map的key:一般是存储每条记录的主键。也可以用其他值表示,主要取决于Dao层@MapKey注解后面的字段(如@MapKey(“user_id”))
- Map的value:也是一个Map,表示查询出这条记录的每个字段的字段名称和字段值。
mapper 接口:
@MapKey("user_id")
public Map<String,Object> selectAccountLookup(String value);
SQL 映射文件:
<!-- 这里为resultType="map" -->
<select id="selectAccountLookup" resultType="map">
select user_id,nick_name,avatar from sys_user
where user_id = #{value}
or email = #{value}
or phonenumber = #{value};
</select>
二、多结果集
mapper 接口:
/**
* 调用存储过程获取多个结果集
* @return
*/
List<List<?>> getTests();
SQL 映射文件:
<!--调用存储过程获取多个结果集
"神bug 不加前面的两个横杠报错"
-->
<select id="getTests" statementType="CALLABLE" resultMap="paging_list,paging_additional" >
--
CALL paging_list ( '*','t_user',1 , 3 , 'faculty_id in (2) and role_id in (3)' , '',@_totalcount,@_pagecount)
</select>
单元测试:
/**
* 测试调用存储过程获取多个结果集
*/
@Test
public void testGetTests(){
List<List<?>> aa =userDao.getTests();
System.out.println(aa.get(0));
System.out.println(aa.get(1));
}