//报错1 类型不匹配
org.apache.ibatis.type.TypeException: Could not set parameters for mapping://报错2 参数需要五个 我只给了四个参数
java.sql.SQLException: Parameter index out of range (5> number of parameters, which is 4).
报错代码
//java代码publicvoidupdateUser(){//4.根据id修改单个user
User user =newUser();
user.setName("奉先");
user.setPassWord("666");
user.setEmail("789789");/* user.setGender("男");*/
user.setId(4);int i = sqlSession.getMapper(UserDao.class).updateUser(user);
System.out.println(i);//xml配置<update id="updateUser" parameterType="user">
update user set name=#{name},passWord=#{passWord},email=#{email}/*,gender=#{gender}*/ where id=#{id}</update>
错误分析
//只是改变参数 也还是会出现TypeException类型不匹配异常
//可以在日志输出看到
### SQL: update user set name=?,passWord=?,email=?/*,gender=?*/ where id=?
//而xml中被注释掉的SQL代码中含有获取值的表达式 ,例如:/*id=#{params.id}*/或者/*id='${params.id}'*/都会抛出此异常
解决
//删除注释的代码 或用准确注释 <!--,gender=?-->
update user set name=#{name},passWord=#{passWord},email=#{email} where id=#{id}//这样就根据需要的参数去set参数 就OK
报错信息//报错1 类型不匹配org.apache.ibatis.type.TypeException: Could not set parameters for mapping://报错2 参数需要五个 我只给了四个参数 java.sql.SQLException: Parameter index out of range (5 > number of parameters, ...