在学习mybatis阶段遇到以下错误
org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter '1' not found. Available parameters are [arg1, arg0, param1, param2]
Cause: org.apache.ibatis.binding.BindingException: Parameter '1' not found. Available parameters are [arg1, arg0, param1, param2]
//测试接口
public interface IStudentDao {
List<Student> selectStudentByCondition(String name, int age);
}
//测试类
public class myTest {
private IStudentDao dao;
private SqlSession sqlSession;
@Before
public void before() {
sqlSession = MyBatisUtils.getSqlSession();
//这里调用的是自己封装的mybatis工具类
dao = sqlSession.getMapper(IStudentDao.class);
}
@After
public void after() {
if(sqlSession != null) {
sqlSession.close();
}
}
@Test
public void test() {
List<Student> students = dao.selectStudentByCondition("王",18);
for (Student student : students) {
System.out.println(student);
}
}
}
//配置文件mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wuji.dao.IStudentDao">
<select id="selectStudentByCondition" resultType="Student">
select id,name,age,score
from student
where name like '%' #{0} '%'
and age > #{1}
</select>
</mapper>
解决方法,修改配置文件mapper.xml中的sql语句中的参数
<select id="selectStudentByCondition" resultType="Student">
select id,name,age,score
from student
where name like '%' #{arg0} '%'
and age > #{arg1}
</select>