您好,登錄后才能下訂單哦!
MyBatis 本身并不直接支持存儲過程的調(diào)用,但你可以通過以下步驟在 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
屬性來處理存儲過程返回的輸出參數(shù)。以下是一個示例:<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");
// 創(chuàng)建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 獲取 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 獲取映射器接口
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
// 創(chuàng)建輸入?yún)?shù)和輸出參數(shù)
Map<String, Object> params = new HashMap<>();
params.put("emp_id", 1);
// 調(diào)用存儲過程
employeeMapper.callGetEmployeeName(params);
// 獲取輸出參數(shù)的值
String empName = (String) params.get("emp_name");
System.out.println("Employee name: " + empName);
// 關(guān)閉 SqlSession
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public interface EmployeeMapper {
void callGetEmployeeName(Map<String, Object> params);
}
現(xiàn)在,當(dāng)你運行 MyBatisProcedureDemo 類時,它將調(diào)用存儲過程并輸出員工姓名。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。