创建项目
创建一个空的maven,创建成功后打开pom文件,修改打包方式为war
<packaging>war</packaging>
导入包坐标
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wj</groupId>
<artifactId>spring_len</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--spring && mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
</dependency>
<!--spring && springmvc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<!--测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<!--tool-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
<!--tomcat插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>80</port>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>6</source>
<target>6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
设置目录
spring整合mybatis
首先在config包下创建SpringConfig类,该类为spring配置类,替代applicationcontext.xml文件
package com.wj.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
/**
* @Description:spring配置类
* @Author WJ
* @Date 2023/2/24:13:33
* @Version V1.0
**/
//声明为配置类
@Configuration
//扫描dao和services包下的bean
@ComponentScan({"com.wj.dao","com.wj.services"})
//加载properties文件
@PropertySource("classpath:mysql.properties")
//导入第三方bean
@Import({MybatisCongif.class, DatasourceConfig.class, ServletConfig.class})
public class SpringConfig {
}
用druid创建datasource的bean
package com.wj.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
/**
* @Description:配置数据源datasource
* @Author WJ
* @Date 2023/2/24:13:56
* @Version V1.0
**/
public class DatasourceConfig {
//从properties配置文件注入值,该文件在springconfig文件中加载过
@Value("${jdbc.driver}")
private String Driver;
@Value("${jdbc.url}")
private String Url;
@Value("${jdbc.username}")
private String UserName;
@Value("${jdbc.password}")
private String Password;
//将该方法的返回值作为bean
@Bean
public DataSource creatdatasource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(Driver);
dataSource.setUsername(UserName);
dataSource.setUrl(Url);
dataSource.setPassword(Password);
return dataSource;
}
}
创建mybatis相关bean
package com.wj.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
/**
* @Description:mybatis配置类
* 第一个bean配置mybatis环境
* 第二个bean配置mapper环境
* @Author WJ
* @Date 2023/2/24:13:55
* @Version V1.0
**/
public class MybatisCongif {
@Bean
public SqlSessionFactoryBean createsqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
//设置数据源
factoryBean.setDataSource(dataSource);
//指定pojo包的位置
factoryBean.setTypeAliasesPackage("com.wj.dao.pojo");
return factoryBean;
}
@Bean
public MapperScannerConfigurer createmapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
//设置mapper接口的位置
mapperScannerConfigurer.setBasePackage("com.wj.dao.mapper");
return mapperScannerConfigurer;
}
}
spring整合springmvc
创建SpringMvcConfig
package com.wj.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* @Description:springmvc配置类
* @Author WJ
* @Date 2023/2/24:14:19
* @Version V1.0
**/
@Configuration
@ComponentScan({"com.wj.controller"})
public class SpringMvcConfig {
}
创建ServletConfig
package com.wj.config;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
import javax.servlet.Filter;
/**
* @Description:配置web容器
* @Author WJ
* @Date 2023/2/24:14:15
* @Version V1.0
**/
public class ServletConfig extends AbstractDispatcherServletInitializer {
//加载springmvc容器
@Override
protected WebApplicationContext createServletApplicationContext() {
//获取容器
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
//注册容器
context.register(SpringMvcConfig.class);
return context;
}
//设置请求归属
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
//加载spring容器
@Override
protected WebApplicationContext createRootApplicationContext() {
// WebApplicationContext context = (WebApplicationContext)new AnnotationConfigApplicationContext();
// context.register(SpringConfig.class);
return null;
}
}
创建SpringMvcSupport
package com.wj.config;
import com.wj.controller.interceptor.ProjectInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
/**
* @Description:对静态资源的访问做处理
* @Author WJ
* @Date 2023/2/24:14:34
* @Version V1.0
**/
@Configuration
@ComponentScan({"com.wj.controller"})
public class SpringMvcSupport extends WebMvcConfigurationSupport {
//注入拦截器
@Autowired
private ProjectInterceptor projectInterceptor;
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
}
}
创建拦截器
package com.wj.controller.interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Description:
* @Author WJ
* @Date 2023/1/28:15:14
* @Version V1.0
**/
//设置为一个bean
@Component
public class ProjectInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}
}
功能测试
dao测试
创建实体类
package com.wj.dao.pojo;
import lombok.Getter;
import lombok.Setter;
/**
* @Description: 对用表 tb_idcard实体类
* @Author WJ
* @Date 2023/2/26:11:34
* @Version V1.0
**/
@Setter
@Getter
public class IdCard {
private Integer id;
private Integer uid;
private String code;
private Integer money;
}
创建mybatis的mapper代理接口
package com.wj.dao.mapper;
import com.wj.dao.pojo.IdCard;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @Description:对tb_idcard表的操作
* @Author WJ
* @Date 2023/2/26:11:35
* @Version V1.0
**/
@Repository
public interface IdCardMapper {
@Select("select * from tb_idcard")
public List<IdCard> sellectall();
}
测试
import com.wj.config.SpringConfig;
import com.wj.dao.mapper.IdCardMapper;
import com.wj.dao.pojo.IdCard;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.sql.DataSource;
/**
* @Description:
* @Author WJ
* @Date 2023/2/24:14:24
* @Version V1.0
**/
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class TestClass {
@Autowired
private IdCardMapper idCardMapper;
@Test
public void test(){
for (IdCard card : idCardMapper.sellectall()) {
System.out.println(card.getCode());
}
}
}
测试成功
controller的测试
创建controller
package com.wj.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @Description:
* @Author WJ
* @Date 2023/2/24:14:50
* @Version V1.0
**/
@Controller
public class TestController {
@RequestMapping(value="/test")
@ResponseBody
public String test1(){
return "hellow";
}
}
启动tomcat,通过浏览器访问,返回了值
SSM纯注解整合完成