SSM整合(整合配置)

  1. 创建工程

  2. SSM整合

    • Spring
      • SpringConfig
    • MyBatis
      • MybatisConfig
      • JdbcConfig
      • jdbc.properties
    • SpringMVC
      • ServletConfig
      • SpringMvcConfig
  3. 功能模块

    • 表与实体类
    • dao(接口+自动代理)
    • service(接口+实现类)
      • 业务层接口测试(整合JUnit)
    • controller
      • 表现层接口测试(PostMan)

创建工程

Project Structure --> Modules --> + --> Maven --> New Module --> Maven --> Archetype --> webapp Project Structure --> New Folder (java, resources, test.java)

org.springframework:spring-webmvc:5.2.10.RELEASE
org.springframework:spring-jdbc:5.2.10.RELEASE
org.springframework:spring-test:5.2.10.RELEASE
org.mybatis:mybatis:3.5.6
org.mybatis:mybatis-spring:1.3.0
mysql:mysql-connector-java:5.1.47
com.alibaba:druid:1.1.16
junit junit4.12 (test)
javax.servlet.javax.servlet-api:3.1.0 (provided)
com.fasterxml.jackson.core:jackson-databind:2.9.0
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <port>80</port>
                <path>/</path>
            </configuration>
        </plugin>
    </plugins>
</build>

src/main/java/ 下创建目录 com.xxx.configcom.xxx.servicecom.xxx.daocom.xxx.controllercom.xxx.domaincom.xxx.service 下创建目录 impl

SpringConfig.java

package com.xxx.config;

@Configuration
@Component({"com.xxx..service"})
@PropertySource("jdbc.properties")
@Import({JdbcConfig.class, MyBatisConfig.class})
public class SpringConfig {

}

src/main/resources 下创建 jdbc.properties jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_db
jdbc.username=root
jdbc.password=root

JdbcConfig.java

package com.xxx.config;

public class JdbcConfig {

    @Value("${jdbc.drive}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

MyBatisConfig.java

package com.xxx.config;

public class MyBatisConfig {

    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.xxx.damain");
        return factoryBean;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.xxx.dao");
        return msc;
    }
}

ServletConfig.java

package com.xxx.config;

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

SpringMvcConfig.java

package com.xxx.config;

@Configuration
@ComponentScan("com.xxx.controller")
@EnableWebMvc
public class SpringMvcConfig {

}