mybatis执行存储过程
时间: 2023-09-02 10:11:40 浏览: 75
mybatis调用存储过程
4星 · 用户满意度95%
MyBatis 可以执行存储过程,可以通过以下步骤来实现:
1. 定义存储过程
首先需要在数据库中定义一个存储过程,例如:
```
CREATE PROCEDURE `getUser`(IN id INT, OUT name VARCHAR(255), OUT age INT)
BEGIN
SELECT `name`, `age`
INTO name, age
FROM `user`
WHERE `id` = id;
END
```
存储过程的参数包括输入参数 `id` 和输出参数 `name`、`age`。
2. 定义 Mapper 接口
接着需要定义一个 Mapper 接口,例如:
```
public interface UserMapper {
@Select("{CALL getUser(#{id, mode=IN}, #{name, mode=OUT, jdbcType=VARCHAR}, #{age, mode=OUT, jdbcType=INTEGER})}")
void getUser(@Param("id") int id, @Param("name") String name, @Param("age") int age);
}
```
在这个接口中,定义了一个方法 `getUser`,使用 `@Select` 注解指定调用存储过程的 SQL 语句,并使用 `@Param` 注解指定参数名和类型。
3. 调用 Mapper 方法
最后就可以通过调用 Mapper 方法来执行存储过程了,例如:
```
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int id = 1;
String name = null;
int age = 0;
userMapper.getUser(id, name, age);
System.out.println("Name: " + name + ", Age: " + age);
```
在这个示例中,调用了 Mapper 接口中的 `getUser` 方法,传入参数 `id`,并获取输出参数 `name` 和 `age`,最后输出结果。
阅读全文