启动类中需要填写
@MapperScan(basePackages = "mybatis接口的包路径") //com.*.dao
@EnableWebMvc //选填,如果直接在启动类中加入此注解,则无法直接访问resources下static的html静态页面(如果在pom中没有声明配置)。 如果不添加此注解,可以直接访问
resources下static的html静态页面,但是会出现找不到绑定接口的异常。例:Invalid bound statement (not found)。
解决方案:
1.在pom文件中加入
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
<!--<include>**/*.html</include>
<include>**/*.css</include>
<include>**/*.jpg</include>
<include>**/*.png</include>
<include>**/*.js</include>
<include>**/*.properties</include>-->
</includes>
</resource>
</resources>
</build>
加入此配置之后 mybatis的xml(SQL XML)可以写在 src/mian 目录下。 如果不加则mybatis的xml需要写在resources下。
2.
在src/main目录下创建一个ValidationConfig类(类名自己随意),写法如下
@Configuration
@EnableWebMvc
public class ValidationConfig implements WebMvcConfigurer {
/**
* 配置静态页面请求处理
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix(null);
viewResolver.setSuffix(null);
registry.viewResolver(viewResolver);
registry.order(1);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/public/");
}
}
这样@EnableWebMvc这个注解就不需要写在启动类那里了,因为这里写了。
这样写 mybatis的xml(SQL)需要写在resources目录下,但是可以直接访问resource下的静态页面,也可以让mybatis找到接口绑定,不去报 Invalid bound statement (not found)。