【Mybatis】Parameter 'XXX' not found. Available parameters are [1, 0, param1, param2]

冷不防 2022-05-24 00:10 342阅读 0赞
  1. 新项目底层选择了更加灵活的Mybatis,之前用的都是自动生成工具,条件查询用的也是生成的Example,因为做统计服务,都是各种查询,也就没有加自动生成的一套。自己写Mapper.xml文件,写了个简单的条件查询接口,就遇到问题了,Parameter XXX not found. Available parameters are \[1, 0, param1, param2\] .
  2. 问题出现的原因是Dao层接口定义和Mapper.xml文件中的参数类型不一致。
  3. Xml文件中,我定义的parameterType是查询条件的一个类,代码如下:
  4. <mapper namespace="com.uqiauto.statistics.business.company.dao.CompanyMapper">
  5. <resultMap id="BaseResultMap" type="com.uqiauto.statistics.business.company.entity.Company">
  6. <result property="id" column="id" jdbcType="INTEGER" />
  7. <result property="compName" column="compName" jdbcType="VARCHAR" />
  8. </resultMap>
  9. <select id="queryAllCompany" resultMap="BaseResultMap" parameterType="com.uqiauto.statistics.business.company.entity.CompanyCriteria">
  10. SELECT
  11. compID id,
  12. compName compName
  13. FROM
  14. wms_company
  15. WHERE 1=1
  16. <if test="keyWord!=null and keyWord!=''">
  17. and compName like concat(concat("%",#{keyWord}),"%")
  18. </if>
  19. <if test="platformId!=null and platformId!=''">
  20. and PLATFORM_ID =#{platformId}
  21. </if>
  22. <if test="companyType!=null and companyType!=''">
  23. and COMPANY_TYPE =#{companyType}
  24. </if>
  25. ORDER BY compID
  26. </select>
  27. </mapper>
  28. 而在Dao层接口定义中,参数定义的是查询条件字段,代码如下:
  29. List<Company> queryAllCompany(String keyWord,Long platformId,String companyType);
  30. 两者不一致,就报错了。解决方案
  31. 1)可以将Dao层方法定义的参数都加上个注解@param,代码如下:
  32. List<Company> queryAllCompany(@Param("keyWord") String keyWord, @Param("platformId")Long platformId, @Param("companyType")String companyType);
  33. 2)可以将Dao层方法定义的参数改为Xml中定义的查询条件类,在类中定义要进行条件筛选的那几个字段,代码如下:
  34. List<Company> queryAllCompany(CompanyCriteria companyCriteria);
  35. @Data
  36. public class CompanyCriteria extends Criteria {
  37. private String keyWord;
  38. private Long platformId;
  39. private String companyType;
  40. }
  41. 总结:简单的问题,因为之前用的都是自动生成的代码,很少手写,所以很多问题都没有见过,积累的过程。

发表评论

表情:
评论列表 (有 0 条评论,342人围观)

还没有评论,来说两句吧...

相关阅读