偶遇尴尬 MyBatis 问题

来源:互联网 发布:js系列减速机加油标准 编辑:程序博客网 时间:2024/04/30 05:22

被这个问题困扰了一天!
添加了一个新的Mapper,然后shiro一直报错一直报错,
以为是哪里配置的不对,
结果最后发现服务器报错信息是这样的,

严重: Servlet.service() for servlet [springMvc] in context with path [/kingmon-web] threw exception [Request processing failed; nested exception is org.apache.ibatis.builder.IncompleteElementException: Could not find SQL statement to include with refid 'com.kingmon.cms.oa.employee.dao.EmployEducationMapper.Update_By_Example_Where_Clause'] with root causejava.lang.IllegalArgumentException: XML fragments parsed from previous mappers does not contain value for com.kingmon.cms.oa.employee.dao.EmployEducationMapper.Update_By_Example_Where_Clause    at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:818)    at org.apache.ibatis.builder.xml.XMLIncludeTransformer.findSqlFragment(XMLIncludeTransformer.java:101)    at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:64)    at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:87)    at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:87)    at org.apache.ibatis.builder.xml.XMLIncludeTransformer.applyIncludes(XMLIncludeTransformer.java:48)    at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:88)    at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:718)    at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:688)    at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:683)    at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:183)    at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:44)    at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)    at com.sun.proxy.$Proxy41.findIdRank(Unknown Source)    at com.kingmon.cms.oa.rankSalary.service.impl.RankSalaryServiceImpl.getIDnRank(RankSalaryServiceImpl.java:140)    at com.kingmon.cms.oa.rankSalary.controller.RankSalaryController.queryIdnRank(RankSalaryController.java:80)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:498)    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)    at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)    at java.lang.Thread.run(Thread.java:748)

于是3分钟后就迈出了实质性的一步:
因为Mapper文件中多了这样一个

    <update id="updateByExampleSelective" parameterType="map">        update employee_education        <set>            <if test="record.id != null">                id = #{record.id,jdbcType=BIGINT},            </if>            <if test="record.employeeCode != null">                employee_code = #{record.employeeCode,jdbcType=VARCHAR},            </if>            <if test="record.school != null">                school = #{record.school,jdbcType=VARCHAR},            </if>            <if test="record.startDate != null">                start_date = #{record.startDate,jdbcType=TIMESTAMP},            </if>            <if test="record.gradDate != null">                grad_date = #{record.gradDate,jdbcType=TIMESTAMP},            </if>            <if test="record.record != null">                record = #{record.record,jdbcType=VARCHAR},            </if>            <if test="record.degree != null">                degree = #{record.degree,jdbcType=VARCHAR},            </if>        </set>        <if test="_parameter != null">            <include refid="Update_By_Example_Where_Clause"/>        </if>    </update>

自动生成的代码,删没删干净,留下了它。还是粗心惹的祸呀。

原创粉丝点击