当前位置: 首页 > 知识库问答 >
问题:

当Mybatis传递的参数数据类型为java映射时,如何执行更新操作?

濮阳宜
2023-03-14
<update id="updateData" parameterType="map">
    UPDATE myDataBase SET
<foreach item="value" index="key " collection="param" separator=",">
    <if test="key != oldPageNo and key != oldNo">
         ${key}=#{value}
    </if>
</foreach>
    WHERE 
    ID = #{param[oldNo]} AND PAGE = #{param[oldPageNo]}
</update>

这里是界面

 int updateData(@Param("param")Map<String, Object> param);

错误:嵌套异常为org.apache.ibatis.binding.bindingException:找不到参数“old pageno”。可用参数为[param,param1]

共有1个答案

闻人昕
2023-03-14

名为param的参数map 。要获取键的值,必须将string传递到其get(Object key)方法中。

因此您必须将以下内容从

ID = #{param[oldNo]} AND PAGE = #{param[oldPageNo]}

ID = #{param['oldNo']} AND PAGE = #{param['oldPageNo']}
<if test="key != oldPageNo and key != oldNo">
<if test="key != 'oldPageNo' and key != 'oldNo'">
 类似资料:
  • 问题内容: 我有一个通用函数,该函数调用Web服务并将JSON响应序列化回一个对象。 我要完成的是等效于此Java代码 我要完成的方法签名正确吗? 更具体地说,将参数类型指定为正确的做法是正确的吗? 调用该方法时,我将其作为returningClass值传递,但是出现编译 错误“无法将表达式的类型’()’转换为’String’类型” CastDAO.invokeService(“test”, wi

  • 我对使用mybatis作为ORM工具相当满意。但是我不能理解MyBatis中参数映射是如何工作的。 假设我定义了一个mybatis映射器接口,该接口有一个获取用户详细信息的方法。 我定义了我的类,其中包含select。

  • 问题总结:我想传递一个带有类型参数(如

  • 问题内容: 问题摘要: 我想将具有类型参数(例如)的类作为类型参数传递给泛型方法。 假设我有一个方法: 当然,此方法对于任何类型的类都可以正常使用。我可以这样调用该方法,例如: 问题: 我发现我不能这样做: 从句法上讲,这显然是无效的。但是,我不确定如何实现这样的目标。我当然可以通过,但是泛型类型的添加使其在语法上不再有效,并且我想不出解决方法。 唯一的直接解决方案是这样的事情(看起来很愚蠢):

  • 问题内容: 有没有办法将可执行块作为参数传递给静态方法?有可能吗?例如我有这种方法 或类似的东西。实际上,这要复杂得多,我只是简化了这个问题。我试图重构项目,并创建了一个通用实用程序类,其中包含类使用的静态方法。 问题答案: 您可以使用对象: 然后,您可以使用以下命令调用它: 编辑(对不起,@ Bohemian):在Java 8中,可以使用lambdas简化调用代码: 您仍然会以相同的方式声明。l

  • 问题内容: 我有一个带有nvarchar参数的存储过程。我希望调用者在使用此SP时提供sql命令的文本。 如何从SP中执行提供的sql命令? 这有可能吗?- 我认为可以使用EXEC进行操作,但需要注意以下几点: 错误,表明它无法通过给定名称找到存储过程。由于它是脚本,因此这显然是准确的,但让我认为它无法按预期工作。 问题答案: 使用: …假设参数是一个完整的SQL查询。如果不: 注意SQL注入攻击