Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mybatis Oracle存储过程_Oracle_Output_Mybatis_Procedure - Fatal编程技术网

Mybatis Oracle存储过程

Mybatis Oracle存储过程,oracle,output,mybatis,procedure,Oracle,Output,Mybatis,Procedure,调用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,

调用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);
它正在执行存储过程,但给出错误

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存储过程以获得多个输入输出参数

杰夫·巴特勒在一篇文章中说:

对于存储过程参数,MyBatis将映射输入和 将参数输出到parameterType中的属性

您可以尝试发送一个Map、POJO或三个带有userId、userPwd和userType的带注释的变量。调用SP后,MyBatis会将OUT参数设置为userType

我现在无法尝试,稍后我将尝试编辑答案。但是你能试试这些吗

1按如下方式定义函数,并在调用SP后检查userType是否已更新

void getUserType(Param("userId") String userId, Param("userPwd") String userPwd, Param("userType") String userType);

2创建一个映射,添加3个键值对,即userId、1234、userPwd、666、userType、null元组。调用SP后,可以尝试获取userType值

void getUserType(Map<String, Object> myMap);

此外,此处还有一个重复的问题/答案:
void getUserType(Map<String, Object> myMap);
void getUserType(UserClass userObj);