Bean不存在
步骤
-
查看这个bean是否注入成功 ok
-
Junit单元测试,看我们代码能否查询出结果 查询ok
-
问题 不在底层,一定是spring出了问题
-
SpringMVC 在整合的时候没有调用到我们的Service层的bean:
1.spring-config.xml 没有注入bean2.web.xml 中我们也绑定过配置文件,发现问题,我们绑定的是 springmvc-config.xml 这里面确实没有service bean 所以报错
## 参数‘bookID’未找到
类型异常报告
消息请求处理失败;嵌套异常为org.mybatis.Spring.MyBatisSystemException:嵌套异常为org.apache.ibatis.binding.BindingException:参数‘bookID’未找到。可用的参数是[参数1,bookid]
描述服务器遇到一个意外的情况,阻止它完成请求.
例外情况
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'bookID' not found. Available parameters are [param1, bookid]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
原因是 BookMapper接口中 把id 转换成 bookid了 所以 BookMapper.xml中
找不到BookID 只有 bookid ,把bookid改成BookID即可
接收参数类型错误
如果一定要使用基本数据类型,在参数前面添加
@RequestParam(value = "bookID",defaultValue = "0")
如:
//删除书籍
@RequestMapping("/deleteBook")
public String DeleteBook(@RequestParam(value = "bookID",defaultValue = "0") int id, Model model){
//bookService.deleteBookById(bookID);
System.out.println("DeleteBook=>"+id);
return "redirect:/book/allBook";
}
## 页面报500错误:Don't know how to iterate over supplied "items" in <forEach>
注意:jsp使用foreach遍历后端传递的list数据
这里直接返回Books对象,所以会报上述错误
There is no getter for property named ‘bookName’ in ‘class java.lang.String’
报错是指:属性名称缺少getter方法
根本原因。
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'bookName' in 'class java.lang.String'
org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:78)
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
com.sun.proxy.$Proxy450.selectList(Unknown Source)
org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223)
org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:144)
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:77)
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
com.sun.proxy.$Proxy451.queryLikeNameBook(Unknown Source)
com.kuang.service.BookServiceImpl.queryLikeNameBook(BookServiceImpl.java:46)
com.kuang.controller.BookController.updateBook(BookController.java:79)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
在Mapper接口方法参数的前面写上@Param(“参数名”),表示给参数命名,名称就是括号中的内容
//根据名字模糊搜索
List<Book> queryLikeNameBook(@Param("bookName") String bookName);