• Mybatis找不到参数错误:There is no getter for property named 'categoryId' in 'class java.lang.Integer'。


    Mybatis找不到参数错误:There is no getter for property named 'categoryId' in 'class java.lang.Integer'。


    错误
    List<Post> listPage(Integer categoryId);
    在测试时报错:There is no getter for property named 'categoryId' in 'class java.lang.Integer'


     问题分析:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取string.value值,引起报错。
     解决方法:  List<Post> listPage(@Param("categoryId")Integer categoryId); 说明参数值。
     
     sql语句
    <select id="listPage" resultMap="PostResultMap">
    select id,title,summary,create_time from p2p_post
    where status=0 
    <if test="categoryId != null">
     and category_id=#{categoryId}
    </if>
    order by id
    desc
    </select>

     最让人郁闷的是,以前在只有1个参数的时候,都是不用@Param注解的,一般只有在多个参数的时候,才需要用。
     为什么这次,只有1个参数,也必须用@Params注解呢?
     -----------------------
     第2天早上,问了下boss,感觉还是有道理的。
     
     正解一:
     @Select("select * from ..")
     List<Post> listPage(Integer categoryId);
     
     正解二:
      List<Post> listPage(@Param("categoryId")Integer categoryId);
      <select>..</select>
      
     正解三:
       List<Post> listPage(Integer categoryId);
      <select id="listPage" parameterType="java.lang.Integer" resultMap="PostResultMap">
      
      </select>
     
     昨天遇到的那个问题,问题关键就是:xml文件中的select映射语句,默认参数类型是map,从map里取属性,所以总是找不到。
     或者是当作对象类型吧。
     因此,用@Param注解或手动指定参数类型。
     
     理论上是这样,没有去一一校验。
     
     另外需要说明,多个参数,必须使用@Param,或者用Map,或者对象。
  • 相关阅读:
    Typora 使用 Markdown 嵌入 LaTeX 数学公式符号语法
    爬虫常用的 urllib 库知识点
    执行Go程序的三种方式及Go语言关键字
    Win10 安装 MongoDB 3.6.5 失败的问题
    笨办法理解动态规划算法
    EclipseEE的Web开发环境配置(使用Tomcat作为Web服务器)
    二分类神经网络公式推导过程
    B+树在磁盘存储中的应用
    JAVA NIO工作原理及代码示例
    B树和B+树的插入、删除图文详解
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462864.html
Copyright © 2020-2023  润新知