一、开发工具与环境
1、IDEA 2018.3.4 、jdk 1.8
二、开发步骤
1、创建maven工程,可以是空工程,也可以选择maven的web模版(这里使用的是空工程)
2、在pom.xml中引入spring/springMVC/mybatis需要的依赖,pom.xml示例如下
<?xml version="1.0" encoding="UTF-8"?> <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> <packaging>war</packaging> <groupId>com.scau</groupId> <artifactId>ssm-demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <servlet.version>4.0.1</servlet.version> <spring.version>5.1.4.RELEASE</spring.version> <mybatis.version>3.5.0</mybatis.version> <mybatis.spring.version>2.0.0</mybatis.spring.version> <mysql.connector.version>8.0.13</mysql.connector.version> <druid.version>1.1.12</druid.version> <jackson.version>2.9.8</jackson.version> <lombok.version>1.18.4</lombok.version> <junit.version>4.12</junit.version> <slf4j.version>1.7.25</slf4j.version> <logback.version>1.2.3</logback.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency> <!-- 引入spring依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- 引入mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- 引入mysql依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.connector.version}</version> </dependency> <!-- 引入Druid数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- 引入sl4j日志依赖 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <!-- 引入lombok依赖:简化实体类开发 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <!-- 引入junit单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <!-- 引入json依赖 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> </dependencies> <build> <plugins> <!-- 设置jdk编译版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> <!-- 解决xml文件不被打包 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project>
3、配置DispatcherServlet(这里使用继承AbstractAnnotationConfigDispatcherServletInitializer的方式,跟在web.xml中配置是一样的)
4、配置数据库信息(数据库信息放在resource下的db.properties)
db.properties
DbProperties.java(将数据库信息封装到DbProperties中,用来配置mybatis)
RootConfig.java(在这里配置mybatis需要的组件)
@Configuration @MapperScan(basePackages = "com.scau.ssm.mapper") @ComponentScan(basePackages = "com.scau.ssm",excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class) }) @EnableTransactionManagement @EnableAspectJAutoProxy @Import(DbProperties.class) public class RootConfig { @Bean public DataSource dataSource(DbProperties dbProperties) { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(dbProperties.getUrl()); dataSource.setDriverClassName(dbProperties.getDriver()); dataSource.setUsername(dbProperties.getUsername()); dataSource.setPassword(dbProperties.getPassword()); dataSource.setMaxActive(20); return dataSource; } @Bean public DataSourceTransactionManager transactionManager(DataSource dataSource){ DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); transactionManager.setDataSource(dataSource); return transactionManager; } @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject(); return sqlSessionFactory; } }
5、配置SpringMVC相关组件,如ViewResolver
WebConfig.java
6、创建实体类(与数据库表对应),略
7、创建mapper接口与mapper.xml(记得放在同一包下,不然mapper扫描不到)
public interface UserMapper { /** * 根据用户名从数据库查询出用户 * * @param username * @return User */ User get(String username); }
UserMapper.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.scau.ssm.mapper.UserMapper"> <select id="get" parameterType="String" resultType="com.scau.ssm.entity.User"> select * from t_user where username = #{username} </select> </mapper>
7、创建service类与controller类,略
三、将项目部署到tomcat,进行测试,结果如下,说是测试成功(这里是因为controller将查询出来的实体以json形式返回到浏览器)
PS:由于长时间使用Springboot自动配置,所以本次用maven整合ssm有点生疏了,有错误的地方请读者指出,谢谢