开始之前
1、搭建好mybatis环境并建立如下的表和对应的实体类
------------------------------------------------------------------------------------------------------
public class TUserPO {
private Integer userId;
private String userName;
private Integer userAge;
// 省略相应的get/set
}
2、建立如下存储过程
DELIMITER $$ -- 修改默认结束符
CREATE PROCEDURE getuserbyid(IN u_id INT, OUT u_name VARCHAR(255), OUT u_age INT)
COMMENT '根据id获取用户名'
BEGIN
SELECT user_name, user_age FROM t_user WHERE user_id = u_id;
END $$
DELIMITER ; -- 恢复默认结束符
3、mapper文件和dao层接口
<select id="getUserById" resultType="map" statementType="CALLABLE" parameterMap="getUserByIdParamMap">
{call getuserbyid(?, ?, ?)} <!-- 刚刚创建的存储过程有3个参数 -->
</select>
<parameterMap type="java.lang.Integer" id="getUserByIdParamMap">
<parameter property="userId" mode="IN" jdbcType="INTEGER" javaType="int"/>
</parameterMap>
Map<String, Object> getUserById(@Param("userId")Integer userId);
测试及结果
@Test
public void getUserByIdTest() {
Map<String, Object> map = userMapper.getUserById(2);
System.out.println(map.toString());
}
{user_name=李四, user_age=20}