【发布时间】:2014-05-26 17:43:10
【问题描述】:
我在调用 oracle 存储过程和从 Oracle 存储过程获取输出参数时遇到问题。 这是我的映射器 AppUserMapper.java
public interface AppUserMapper {
@Select(value= "{ CALL sp_check_user( #{userId, mode=IN, jdbcType=VARCHAR }, #{userPwd, mode=IN, jdbcType=VARCHAR}, #{userType, jdbcType=VARCHAR, mode=OUT} )}")
@Options(statementType = StatementType.CALLABLE)
Object getUserType(String userId,String UserPwd);
}
Dao call
Map<String, Object> retrurnStatus = (Map<String, Object>) appUserMapper.getUserType(userId,UserPwd);
这里是存储过程代码
CREATE OR REPLACE PROCEDURE HR.sp_check_user (userId VARCHAR,userPwd VARCHAR, userType OUT VARCHAR )
AS
BEGIN
BEGIN
select user_type into userType from appuser where USER_ID = userId and USER_PWD = userPwd ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
userType := 'Invalid';
END ;
END ;
/
正在执行存储过程却报错
DEBUG 2014-04-12 09:51:56,948 org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl: ==> Preparing: { CALL sp_check_user( ?, ?, ? ) }
DEBUG 2014-04-12 09:51:57,103 org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl: ==> Parameters: abc(String), abc1(String)
Could not complete request
java.lang.NullPointerException
at com.appuser.dao.AppUserDaoImpl.getUserType(AppUserDaoImpl.java:33)
我一直在尝试多种选择,但找不到可以照原样尝试的示例。
我将在这方面提供适当的帮助,因为我一直在尝试在 mybatis 中使用带有多个输入和输出参数的 oracle 存储过程。
谁能提供使用mybatis调用Oracle存储过程的简单示例,用于多个输入输出参数?
【问题讨论】:
标签: oracle output mybatis procedure