Parameter ‘personId’ not found. Available parameters are [0, 1, param1, param2]
mybatis 的映射文件mapper.xml中传入多个查询参数时,mybatis会对参数进行处理。处理为map形式。
我们在mapper.xml中需要做特殊处理;
<select id="selectByNameAndPersonId" resultMap="BaseResultMap">
select
*
from pwd
<where>
person_id = #{0,jdbcType=INTEGER}
and platform_name = #{1,jdbcType=VARCHAR}
</where>
</select>
dao层的代码;
PassWord selectByNameAndPersonId(Integer personId, String platformName);
person_id = #{0,jdbcType=INTEGER}
and platform_name = #{1,jdbcType=VARCHAR}
0 :代表dao层接口传入的第0个参数。
1 :代表dao层接口传入的第1个参数。
这种传参方式需要我们在dao层的接口参数与数据库表中相应的字段对应。
dao层的personId对应0 对应person_id;
dao层的platformName对应1对应platform_name;
dao层接口方法参数 | 自定义map的位置 | mapper中对应数据库字段 |
---|---|---|
personId | 0 | person_id |
platformName | 1 | platform_name |
有问题,联系我啊 !