目录
- SSM+Maven项目环境搭建
-
- 1. 创建一个空白项目
- 2. 在空白项目中创建父模块
- 3. 创建model、dao、service子模块
- 4. 创建background后台web子模块
- 5. 在父模块中抽取公共的依赖
- 6. 在background中集成spring+mvc+springMybaits的整合
- 7. 配置本地Tomcat跑一下
- 8. 添加SpringMVC配置文件
- 9. 在web.xml中加载SpringMVC配置文件并更改web.xml为3.0
- 10. dao中整合mybatis
- 11. service依赖dao
- 12. background中依赖service
- 13. background中添加其它依赖
- 14. background的其它配置文件
- 14. web.xml中加载Spring的配置文件
- 15. 去除Mybatis的配置文件(简化)
- 16. dao打包时要在pom中配置包含.xml
- 17. 运行项目
SSM+Maven项目环境搭建
1. 创建一个空白项目
2. 在空白项目中创建父模块
- 可选择快速创建
- 删除src,父项目无需src,只需在pom.xml中做一些配置即可
3. 创建model、dao、service子模块
4. 创建background后台web子模块
- 可使用模板快速创建
5. 在父模块中抽取公共的依赖
<!--公共版本号-->
<properties>
<junit.version>4.12</junit.version>
</properties>
<!--公共依赖-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
6. 在background中集成spring+mvc+springMybaits的整合
<mybatis-spring.version>1.3.2</mybatis-spring.version>
<spring.version>4.3.14.RELEASE</spring.version>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</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-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</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-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</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>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
7. 配置本地Tomcat跑一下
8. 添加SpringMVC配置文件
- 写在resources下(java与resources文件夹需要自行创建,然后标记为root和资源文件)
- 注解的扫描位置配置先随便写个包让它不报错即可
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- 1.注解扫描位置-->
<context:component-scan base-package="com.it.web.controller" />
<!-- 2.配置映射处理和适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!-- 3.视图的解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
9. 在web.xml中加载SpringMVC配置文件并更改web.xml为3.0
<?xml version="1.0" encoding="UTF-8"?>
<web-app
version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Archetype Created Web Application</display-name>
<!-- 配置SpringMVC-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:SpringMVC-Config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
10. dao中整合mybatis
- dao中添加依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
- 父模块中控制版本
<mybatis.version>3.4.1</mybatis.version>
1. 在model中写一个User备用
- 提供get/set、toString
2. 在dao中抽取一个公共的BaseMapper
package com.it.mapper;
public interface BaseMapper<T> {
T findById(Integer id);
void deleteById(Integer id);
void save(T entity);
void update(T entity);
}
3. 在dao中继续写UserMapper和xml
- 继承公共的Mapper,导入model中的依赖
- 可直接Alt+Enter自动导入
- 写一个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.it.mapper.UserMapper" >
<select id="findById" resultType="user" parameterType="int">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
11. service依赖dao
1. service里添加spring的一些依赖,确保一些注解的使用
<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-tx</artifactId>
<version>${spring.version}</version>
</dependency>
2. 在Service中写一个BaseService抽取基类
- 与dao中的方法名保持一致
package com.it.service;
public interface BaseService<T> {
T findById(Integer id);
void deleteById(Integer id);
void save(T entity);
void update(T entity);
}
3. 写个抽象的BaseService的实现类,统一管理dao
- 使用UserMapper,导入dao的依赖
public abstract class BaseServiceImpl<T> implements BaseService<T> {
//统一管理dao
@Autowired
protected UserMapper userMapper;
}
4. 写个UserService继承基类,还可以实现特有的方法
package com.it.service;
import com.it.model.User;
/**
* @ClassName UserService
* @Author shuyy
* @Date 2020/10/19
**/
public interface UserService extends BaseService<User> {
//特有方法
public User login(String username,String password);
}
5. 写个UserService的实现类继承抽象基类实现类并实现自己类
package com.it.service.impl;
import com.it.model.User;
import com.it.service.UserService;
/**
* @ClassName UserServiceImpl
* @Author shuyy
* @Date 2020/10/19
**/
@Service
@Transactional
public class UserServiceImpl extends BaseServiceImpl<User> implements UserService {
public User login(String username, String password) {
return null;
}
public User findById(Integer id) {
return userMapper.findById(id);
}
public void deleteById(Integer id) {
}
public void save(User entity) {
}
public void update(User entity) {
}
}
12. background中依赖service
package com.it.web.controller;
import com.it.model.User;
import com.it.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @ClassName UserController
* @Author shuyy
* @Date 2020/10/19
**/
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("find")
public String find(Integer id){
User user = userService.findById(id);
System.out.println(user);
return null;
}
}
- 如果实在忍受不了就配置去除自动检测bean是否存在
13. background中添加其它依赖
- AOP联盟+织入导入spring时已经自动导入,无需再添加
c3p0 数据库连接池+MySQL连接驱动 + jstl+log4j
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- 数据连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!-- jstl标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${taglibs.version}</version>
</dependency>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.12</slf4j.version>
<jstl.version>1.2</jstl.version>
<taglibs.version>1.1.2</taglibs.version>
<c3p0.version>0.9.5.2</c3p0.version>
<mysql.version>8.0.13</mysql.version>
14. background的其它配置文件
Spring-Config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxPoolSize" value="30"/>
<property name="minPoolSize" value="2"/>
</bean>
<!-- 配置sessionFactory -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 指定配置文件位置 -->
<property name="configLocation" value="classpath:Mybatis-Config.xml"/>
</bean>
<!-- 自动生成dao、mapper-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.it.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
</bean>
<!--自动扫描Service-->
<context:component-scan base-package="com.it"/>
<!-- 配置事务-->
<!-- 5.配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 6.开启事务注解-->
<tx:annotation-driven></tx:annotation-driven>
</beans>
Mybatis-Config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 别名配置 -->
<typeAliases>
<!-- 批量配置别名:指定批量定义别名的类包,别名为类名(首字母大小写都可) -->
<package name="com.it.model"/>
</typeAliases>
<mappers>
<!-- 批量加载映射文件 -->
<package name="com.it.mapper"/>
</mappers>
</configuration>
log4j.properties
#Global logging configuration
log4j.rootLogger=DEBUG, stdout
#Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
db.properties
- 8版本的数据库要加上时区设置?serverTimezone=UTC
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
jdbc.username=root
jdbc.password=root
14. web.xml中加载Spring的配置文件
- Spring配置文件不在默认位置需要配置位置信息
<!-- 配置Spring-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:Spring-Config.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
15. 去除Mybatis的配置文件(简化)
-
发现Mybatis中只有简单的几句配置却要占用一个配置文件,干掉它
-
在Spring-Config.xml(Spring配置文件)中配置Mybatis的相关设置
<!--配置别名-->
<property name="typeAliasesPackage" value="com.it.model"></property>
<!--配置加载映射文件-->
<property name="mapperLocations" value="classpath:com/it/mapper/*Mapper.xml"></property>
16. dao打包时要在pom中配置包含.xml
- 因为默认情况下.xml不会打包到jar包中,而我们是需要使用.xml文件的(里面写的sql)
- (在dao的pom中配置)
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
17. 运行项目
- 传入一个id值
- 成功查询到数据
- 注意一些低版本可能导致的错误(可将模块都设置到8)
- 项目环境搭建完成后就可以导入一些页面搬砖了