Java 如何从MyBatis获得价值?
我在从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="
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());