1、我要实现 姓名,年龄段的组合查询功能
Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘name’ not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
我写的具体代码如下:
1、StudentMapper类:传入 名字,年龄1,年龄2 三个参数
List getUserByNameAndAge(String name, Integer age1, Integer age2);
2、StudentMapper.xml类:
(作者:炫封 原文:https://blog.csdn.net/weixin_37891479/article/details/80525612 )
产生的原因:
当传入多个参数时,映射文件无法获得传入的参数
AParameter ‘name’ not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
这句话的意思就是id找不到,可用的参数是[arg2, arg1, arg0, param3, param1, param2]。
所以可使用参数出现的顺序号码来引用参数,第一个参数用arg0或param1表示,第二个参数用arg1或param2表示,
StudentMapper不变, 只修改StudentMapper.xml文件,注意,将name改成arg0,age1改成arg1,age2改成arg2
StudentMapper.xml文件不变,修改StudentMapper
List getUserByNameAndAge(@Param("name") String name, @Param("age1") Integer age1, @Param("age2") Integer age2);
StudentMapper.xml文件不变,修改StudentMapper, UserServiceImpl
//StudentMapper接口:
List getUserByNameAndAge(Map params);
//UserServiceImpl:
Map params = new HashMap();
params.put("name", name);
params.put("age", age1);
params.put("age", age2);
List list = studentMapper.getUserByNameAndAge(params);