我做的功能是根据id和lastName查找一条员工信息记录。
public Employee getEmpByIdAndLastName(Integer id,String lastName);
<select id="getEmpByIdAndLastName" resultType="com.fzl.mybatis.bean.Employee" databaseId="mysql">
select * from tbl_employee where id = #{id},last_name = #{lastName}
</select>
当传递多个参数给sql映射文件时,报错:
这个错误与mybatis处理参数机制有关。
当传入多个参数的时候,mybatis会做特殊处理。多个参数会被封装成一个map。其中,key:param1…paramN,或者参数的索引也可以,value:传入的参数值。
而#{}就是从map中获取指定的key的值;因此这时候,我们依然使用#{id},#{lastName}就会报错。
解决办法:
明确指定封装参数时map的key;
public Employee getEmpByIdAndLastName(@Param("id") Integer id,@Param("lastName")String lastName);
这样就可以了。
多个参数会被封装成 一个map,
key:使用@Param注解指定的值
value:参数值
#{指定的key}取出对应的参数值