常见错误
Invalid bound statement (not found):
1.检查dao 和 mapper 名字是否一样
2.检查方法名 和mapper写的 是否一样
3.mapper.xml 的<mapper namespace="com.theme.dao.AppDao">是否正常,再检查仔细有没有多写,少写,错写。
Failed to load ApplicationContext:
1.检查配置文件里是否写错,@Value参数要于配置文件相对应。
2.是否标了注解
注解里的value可写可不写
3.方法是否写正确了,还有是否带了参数
纯配置替代web.xml
接下来上代码
AppConfig
package com.theme.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import javax.sql.DataSource;
import java.io.IOException;
//注解类
@Configuration
@ComponentScan( "com.theme")
@EnableWebMvc
//加载配置文件
@PropertySource("classpath:db.properties")
//扫描包
@MapperScan(value = "com.theme.dao")
public class AppConfig extends WebMvcConfigurationSupport {
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.driverClassName}")
private String driver;
@Bean
// 配置数据源
public DataSource getDataSource(){
DruidDataSource dataSource=new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean
// 配置sql工厂
public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
// 设置工厂数据源
factoryBean.setDataSource(dataSource);
// 设置包别别名
factoryBean.setTypeAliasesPackage("com.theme.model");
//开启支持驼峰命名
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
factoryBean.setConfiguration(configuration);
//查找资源
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources=null;
try {
resources=resolver.getResources("classpath:/com/theme/dao/*.xml");
} catch (IOException e) {
// e.printStackTrace();
}
factoryBean.setMapperLocations(resources);
return factoryBean;
}
@Bean
// 视图管理器
public InternalResourceViewResolver getResolver(){
return new InternalResourceViewResolver("",".jsp");
}
// 添加拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// registry.addInterceptor();
}
// 静态放行
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
WebStarat
package com.theme.config;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
public class WebStarat implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context=new AnnotationConfigWebApplicationContext();
//加载ApplicationContext
context.register(AppConfig.class);
DispatcherServlet dispatcherServlet=new DispatcherServlet(context);
// 映射
ServletRegistration.Dynamic registration=servletContext.addServlet("springmvc",dispatcherServlet);
// 优先执行
registration.setLoadOnStartup(1);
registration.addMapping("/");
}
}
AppContorller
package com.theme.controller;
import com.theme.model.AppVersion;
import com.theme.service.AppService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
@Controller
@RequestMapping("/hello")
public class Appcontroller {
@Autowired
private AppService appService;
@RequestMapping("/test1")
public ModelAndView Appcontroller(ModelAndView model) {
List<AppVersion> all = appService.findAll();
for (AppVersion appVersion : all) {
System.out.println(appVersion.toString().toString());
}
model.addObject("app",all);
model.setViewName("/test");
return model;
}
}
AppDao
package com.theme.dao;
import com.theme.model.AppVersion;
import java.util.List;
public interface AppDao {
List<AppVersion> findAll();
}
AppDao.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.theme.dao.AppDao">
<select id="findAll" resultType="AppVersion">
select * from app_version
</select>
</mapper>
App (实体类)
package com.theme.model;
public class AppVersion {
private long id;
private long platform;
private String versionNo;
private long forceUpdate;
private String downPath;
private double size;
private String appExplain;
private java.sql.Timestamp createDate;
private java.sql.Timestamp updateDate;
private String delFlag;
private String createBy;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getPlatform() {
return platform;
}
public void setPlatform(long platform) {
this.platform = platform;
}
public String getVersionNo() {
return versionNo;
}
public void setVersionNo(String versionNo) {
this.versionNo = versionNo;
}
public long getForceUpdate() {
return forceUpdate;
}
public void setForceUpdate(long forceUpdate) {
this.forceUpdate = forceUpdate;
}
public String getDownPath() {
return downPath;
}
public void setDownPath(String downPath) {
this.downPath = downPath;
}
public double getSize() {
return size;
}
public void setSize(double size) {
this.size = size;
}
public String getAppExplain() {
return appExplain;
}
public void setAppExplain(String appExplain) {
this.appExplain = appExplain;
}
public java.sql.Timestamp getCreateDate() {
return createDate;
}
public void setCreateDate(java.sql.Timestamp createDate) {
this.createDate = createDate;
}
public java.sql.Timestamp getUpdateDate() {
return updateDate;
}
public void setUpdateDate(java.sql.Timestamp updateDate) {
this.updateDate = updateDate;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
@Override
public String toString() {
return "AppVersion{" +
"id=" + id +
", platform=" + platform +
", versionNo='" + versionNo + '\'' +
", forceUpdate=" + forceUpdate +
", downPath='" + downPath + '\'' +
", size=" + size +
", appExplain='" + appExplain + '\'' +
", createDate=" + createDate +
", updateDate=" + updateDate +
", delFlag='" + delFlag + '\'' +
", createBy='" + createBy + '\'' +
'}';
}
}
AppService
package com.theme.service;
import com.theme.model.AppVersion;
import java.util.List;
public interface AppService {
List<AppVersion> findAll();
}
AppServiceImpl
package com.theme.service.Impl;
import com.theme.dao.AppDao;
import com.theme.model.AppVersion;
import com.theme.service.AppService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AppServiceImpl implements AppService {
@Autowired
private AppDao appDao;
@Override
public List<AppVersion> findAll() {
return appDao.findAll();
}
}
多个项目已上传GIT 如果有需要联系本人微 :qiu121389
网友评论