zoukankan      html  css  js  c++  java
  • 记一次操蛋的:Could not find parameter map java.lang.Long

    学着写淘淘商场的项目,刚开始的搭建轻轻松松,按照教程来很顺利,也可以轻松运行出来结果。

    但是今天(2018-11-11)却遇到一个非常奇葩的事,代码如下

    <resultMap id="BaseResultMap" type="com.pp.taotao.model.ItemCat" >
        <constructor >
          <idArg column="id" jdbcType="BIGINT" javaType="java.lang.Long" />
          <arg column="parent_id" jdbcType="BIGINT" javaType="java.lang.Long" />
          <arg column="name" jdbcType="VARCHAR" javaType="java.lang.String" />
          <arg column="status" jdbcType="INTEGER" javaType="java.lang.Integer" />
          <arg column="sort_order" jdbcType="INTEGER" javaType="java.lang.Integer" />
          <arg column="is_parent" jdbcType="BIT" javaType="java.lang.Boolean" />
          <arg column="created" jdbcType="TIMESTAMP" javaType="java.util.Date" />
          <arg column="updated" jdbcType="TIMESTAMP" javaType="java.util.Date" />
        </constructor>
      </resultMap>
      <sql id="Base_Column_List" >
        id, parent_id, name, status, sort_order, is_parent, created, updated
      </sql>
      
      <!--根据parent_id查询数据-->
      <select id="selectByParentId" resultMap="BaseResultMap" parameterMap="java.lang.Long">
        select
        <include refid="Base_Column_List" />
        from tb_item_cat
        where parent_id = #{id,jdbcType=BIGINT}
      </select>

    这是一个Mapper文件,有Mybatis逆向工程生成的,下面这段代码是我自己写的,根据传入的id查询出对应的数据;

    <!--根据parent_id查询数据-->
      <select id="selectByParentId" resultMap="BaseResultMap" parameterMap="java.lang.Long">
        select
        <include refid="Base_Column_List" />
        from tb_item_cat
        where parent_id = #{id,jdbcType=BIGINT}
      </select>

    然后执行程序报了如下错误:org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map java.lang.Long

    瞬间一脸懵逼,MMP,前几天还好好的,怎么突然报错了。。。。。。

    跟踪错误,跑到了我之前可以完美执行的代码下,我擦,什么鬼情况。。。。倒腾了一晚上,没结果。。。

    无限百度查,还是迷迷糊糊,那就随便试被,最后根据该微博https://blog.csdn.net/sunnyzyq/article/details/71157962搞定了,感觉像是瞎猫碰上死耗子,呵呵哒。

    错误原因是Mybatis配置文件语句有问题,原语句为:

    <!--根据parent_id查询数据-->
      <select id="selectByParentId" resultMap="BaseResultMap" parameterMap="java.lang.Long">
        select
        <include refid="Base_Column_List" />
        from tb_item_cat
        where parent_id = #{id,jdbcType=BIGINT}
      </select>

    原因:java.lang.Long类型不能用parameterMap修饰,改为parameterType即可,故修改后的正确语句为:

    <!--根据parent_id查询数据-->
      <select id="selectByParentId" resultMap="BaseResultMap" parameterType="java.lang.Long">
        select
        <include refid="Base_Column_List" />
        from tb_item_cat
        where parent_id = #{id,jdbcType=BIGINT}
      </select>

    这这这~~~~~不敢相信啊,就是Map和Type之差,真的是瞬间一万只草泥马在蹦腾啊。。。。。

    哎,写代码还是要非常非常细心的,加油加油,seven!!!!!!

  • 相关阅读:
    Apple的App Analytics统计平台你必须知道的Q&A整理与翻译
    WWDC2014总结---For产品经理们
    AppStore占坑注意事项
    Mac上的终端(Terminal)启动缓慢
    iOS推送失败的可能问题汇总
    Mac OS X 10.9 Mavericks安装后,Xcode调试时模拟器黑屏的处理方法
    MySql批处理的小窍门:排行榜类数据生成
    升级OSX 10.9 Mavericks后,会导致Finder始终无响应的一个问题
    拉面馆中的移动互联网——无线KPI探讨
    Weak is not weak,Strong is not strong
  • 原文地址:https://www.cnblogs.com/seven1314pp/p/8805148.html
Copyright © 2011-2022 走看看