一、问题
Springboot + Mybatis中进行条件查询时候报错
EmpMapper中代码如下:
@Mapper
public interface EmpMapper {
@Select("select * from emp " +
"where name like concat('%',#{name},'%') " +
"and gender = #{gender} " +
"and entrydate between #{begin} and #{end} " +
"order by update_time desc")
public List<Emp> list(@Param("name") String name, @Param("gender") Short gender,@Param("begin") LocalDate begin,@Param("end") LocalDate end);
}
Test中的代码
@Test
public void testList(){
List<Emp> empList = empMapper.list("张",(short)1, LocalDate.of(2010,1,1),LocalDate.of(2020,1,1));
System.out.println(empList);
}
然后报错如下:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘name’ not found. Available parameters are [arg3, arg2, arg1, arg0, param3, param4, param1, param2]
二、解决方法
由于Mapper中的方法传入了多个参数,需要加入一个@Param注解,修改如下:
@Select("select * from emp " +
"where name like concat('%',#{name},'%') " +
"and gender = #{gender} " +
"and entrydate between #{begin} and #{end} " +
"order by update_time desc")
public List<Emp> list(@Param("name") String name, @Param("gender") Short gender,@Param("begin") LocalDate begin,@Param("end") LocalDate end);
再次启动项目: