Java 如何从MyBatis获得价值?

Java 如何从MyBatis获得价值?,java,oracle10g,mybatis,Java,Oracle10g,Mybatis,我在从myBatis检索属性时遇到问题。它表示java.lang.NullPointerException。我只想从结果映射中获取用户id,该结果映射是在使用函数向数据库插入值后自动生成的(我使用的是oracle 10g) 我在mapper中的代码如下 <resultMap type="User" id="userMap"> <result property="userId" column="user_id"/> <result property="

我在从myBatis检索属性时遇到问题。它表示
java.lang.NullPointerException
。我只想从结果映射中获取
用户id
,该结果映射是在使用函数向数据库插入值后自动生成的(我使用的是oracle 10g)

我在mapper中的代码如下

<resultMap type="User" id="userMap">
    <result property="userId" column="user_id"/>
    <result property="someProperty1" column="property_1"/>
    <result property="someProperty2" column="property_2"/>
</resultMap>

<insert id="addUser" parameterType="map" statementType="CALLABLE">
    { CALL 
    #{userResult, javaType=java.sql.ResultSet, jdbcType=CURSOR, mode=OUT, resultMap=userMap} :=
    PROJECT.create_user(
            #{surname,      javaType=String,    jdbcType=VARCHAR,   mode=IN},
            #{givenName,    javaType=String,    jdbcType=VARCHAR,   mode=IN},
            #{middleName,   javaType=String,    jdbcType=VARCHAR,   mode=IN}    
    )}
</insert>
我使用的是
private-Map-paramMap=new-HashMap()
似乎我使用了
paramMap.get(“userId”)
是错误的,但我对此不确定


任何建议或提示都会非常有用!非常感谢

从数据库取回自动生成的密钥从未被标准化,因此它往往是特定于数据库的。使用Oracle时,首先需要从序列中选择新的键值,然后进行插入并返回结果。为MyBatis项目提供了真正的石油


一些较新的javaer映射框架正在透明地处理这个问题。例如,SpringJDBC模板有一个GeneratedKeyHolder对象,用于抽象数据库工作。请参阅示例。

可能
paramMap
userId
为空,您可以调试它,看看哪个为空。好的,谢谢@Reno!
return Integer.parseInt(paramMap.get("userId").toString());