本次需要返回多条数据,继续延伸上节的内容,数据表沿用之前的
1.创建存储过程的时候只需要配置IN的参数
BEGIN
select id,method
from test
where name=spName;
END
IN的配置
IN `spName` varchar(20)
2.Navicat测试一波
call select_by_name_call("444")
3.编写MyBatis的xml文件,注意resultType=“java.util.Map”,返回结果用的是Map集合
<select id="selectByNameByCall" statementType="CALLABLE" useCache="false" resultType="java.util.Map">
{
call select_by_name_call
(
#{spName, mode=IN, jdbcType=VARCHAR}
)
}
</select>
4.Controller调用,查询还是用的Map,返回结果的话使用List<Map<String, Object>>,因为是多条数据嘛,用链表
@GetMapping(value = "/selectByNameByCall/{name}")
@ResponseBody
public Result selectByNameByCall(@PathVariable String name){
Map<String, Object> map = new HashMap<>();
// 更具Name查询
map.put("spName", name);
// 调用存储过程函数
List<Map<String, Object>> maps = testService.selectByNameByCall(map);
// 返回查询结果
return ResultUtil.success(maps);
}