美文网首页
Spring 和 Mybatis整合 单框架(纯注解版)

Spring 和 Mybatis整合 单框架(纯注解版)

作者: 山不转人自转 | 来源:发表于2020-12-14 19:30 被阅读0次

常见错误

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

相关文章

网友评论

      本文标题:Spring 和 Mybatis整合 单框架(纯注解版)

      本文链接:https://www.haomeiwen.com/subject/zofbgktx.html