您好,登錄后才能下訂單哦!
MyBatis 本身并不直接支持存儲過程的調用,但你可以通過以下步驟在 MyBatis 中集成存儲過程:
DELIMITER //
CREATE PROCEDURE get_employee_name(IN emp_id INT, OUT emp_name VARCHAR(100))
BEGIN
SELECT name INTO emp_name FROM employee WHERE id = emp_id;
END //
DELIMITER ;
jdbcType
屬性來處理存儲過程返回的輸出參數。以下是一個示例:<select id="callGetEmployeeName" parameterType="map" statementType="CALLABLE">
{call get_employee_name(#{emp_id, mode=IN, jdbcType=INTEGER}, #{emp_name, mode=OUT, jdbcType=VARCHAR})}
</select>
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class MyBatisProcedureDemo {
public static void main(String[] args) {
try {
// 讀取 MyBatis 配置文件
InputStream inputStream = MyBatisProcedureDemo.class.getResourceAsStream("/mybatis-config.xml");
// 創建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 獲取 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 獲取映射器接口
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
// 創建輸入參數和輸出參數
Map<String, Object> params = new HashMap<>();
params.put("emp_id", 1);
// 調用存儲過程
employeeMapper.callGetEmployeeName(params);
// 獲取輸出參數的值
String empName = (String) params.get("emp_name");
System.out.println("Employee name: " + empName);
// 關閉 SqlSession
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public interface EmployeeMapper {
void callGetEmployeeName(Map<String, Object> params);
}
現在,當你運行 MyBatisProcedureDemo 類時,它將調用存儲過程并輸出員工姓名。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。