весенняя загрузка с mybatis, запуск mvn package war произойдет Неверный связанный оператор (не найден)

Я построил проект с весенней загрузкой и mybatis, он успешно запускается в eclipse, но когда я mvn clean package и выполняю java -jar yishi-service.war, возникает исключение:

[http-nio-8080-exec-1] ERROR c.j.yishi.service.PageViewService - Invalid bound statement (not found): com.jiajian.yishi.mybatis.mapper.PageViewMapper.insertSelective 
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.jiajian.yishi.mybatis.mapper.PageViewMapper.insertSelective
    at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:214)
    at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
    at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
    at com.sun.proxy.$Proxy61.insertSelective(Unknown Source)
    at com.jiajian.yishi.service.PageViewService.add(PageViewService.java:35)
    at com.jiajian.yishi.service.PageViewService$$FastClassBySpringCGLIB$$f6c85bb1.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
    at com.jiajian.yishi.service.PageViewService$$EnhancerBySpringCGLIB$$a64c8127.add(<generated>)
    at com.jiajian.yishi.common.pv.PageViewContainerRequestFilter.filter(PageViewContainerRequestFilter.java:60)
    at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:132)
    at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:68)
    at org.glassfish.jersey.process.internal.Stages.process(Stages.java:197)
    at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:318)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)

Моя SessionFactory:

@Configuration
@EnableTransactionManagement
@MapperScan(value = "com.mybatis.mapper", sqlSessionFactoryRef = "sqlSessionFactory")
public class SessionFactoryConfig implements TransactionManagementConfigurer{  
    private static String MYBATIS_CONFIG = "mybatis-config.xml";    
    @Autowired    
    private DataSource dataSource;
    @Autowired
    private ResourceLoader resourceLoader;
    private String typeAliasPackage = "com.mybati.model";   
    @Bean(name = "sqlSessionFactory")   
    public SqlSessionFactoryBean createSqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();    
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(MYBATIS_CONFIG));
         sqlSessionFactoryBean.setDataSource(dataSource);    sqlSessionFactoryBean.setMapperLocations(ResourcePatternUtils.getResourcePatternResolver(resourceLoader).
                 getResources("classpath:com/mybatis/mapper/*.xml"));            sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasPackage);        
         return sqlSessionFactoryBean;    
     }
    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
    @Bean
    @Override
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return new DataSourceTransactionManager(dataSource);
    }
}

Я уверен, что мой картограф и xml верны, потому что они успешно работают в моем eclipse, и я получаю данные.


person vincent ren    schedule 28.11.2016    source источник


Ответы (1)


Когда я сплю, я думаю, что это исключение странное, и я сомневался, что пакет плагинов maven пропускает мой xml-файл, который находится в папке src/main/java. Теперь я удостоверяюсь, что исключение вызвано этой причиной. Ресурс весенней загрузки maven по умолчанию не включает файл xml, который в src/main/java я изменил свой pom.xml, и он успешно запустился. pom.xml добавить это:

<resources>  
        <resource>
                <directory>${basedir}/src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/application*.yml</include>
                    <include>**/application*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>${basedir}/src/main/resources</directory>
                <excludes>
                    <exclude>**/application*.yml</exclude>
                    <exclude>**/application*.properties</exclude>
                </excludes>
            </resource>
            <resource>  
                <directory>src/main/java</directory>  
                <includes>  
                    <include>**/*.properties</include>  
                    <include>**/*.xml</include>  
                </includes>   
                <filtering>false</filtering>  
            </resource>  
        </resources>
person vincent ren    schedule 29.11.2016