SSM整合(Spring springMVC mybatis 的整合使用 )
由于是完整的所以很长哈,有点心理准备
包的创建样子
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210309221112999.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjI5NjkzMQ==,size_16,color_FFFFFF,t_70
1.导包,在pom.xml里面
<packaging>war</packaging>
<dependencies>
<!--先引入Spring核心容器包包含aop包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--引入web包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--引入spring-webmvc包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--引入spring-aspects包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--映入织入包-->
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.5.4</version>
</dependency>
<!--引入aop依赖包-->
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<!--引入事务包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--引入jdbc模板类包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--引入commons-beanutils包-->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.7.0</version>
</dependency>
<!--引入dbutils包-->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.4</version>
</dependency>
<!--junit包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!--spring-test-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!--日志包-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!--log4j包-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--commons-io包-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<!--文件上传包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!--jstl包-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--servlet包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--jsp包-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<!--数据库驱动jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!--c3p0连接池-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!--druid包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.2</version>
</dependency>
<!--mybatis包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--mybatish和spring的整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
<!--动态代理cglib包-->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
2.在resource下面建立两个目录, spring和mybatis,分别同来存放各自的核心配置文件
3.引入将会使用到的db.properties和log4j.properties文件
db.properties文件
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/db_springmvc?characterEncoding=UTF-8
jdbc.user=root
jdbc.password=root
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
4.在spring目录之下,配置springmvc.xml配置文件
1.设置处理器映射器和处理器适配器的注解驱动
2.开启扫描controller组件
3.配置视图处理器
<!--开启注解驱动 配置处理器映射器和处理器适配器-->
<mvc:annotation-driven/><!--中需要一行就能解决问题牛逼的哦-->
<!--开启扫描controller组件-->
<context:component-scan base-package="com.zhiyou100.web.controller"/>
<!--配置视图解析器,添加前后缀-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--静态资源放行-->
<!--<mvc:default-servlet-handler/>-->
5.在spring目录下创建applicationContext-dao.xml
1.引入db.properties
2.配置连接池依赖于db.properties生成dataSource对象
3和4属于mybatis整合spring的操作
3.创建SqlSessionFactorty对象
4.配置mapper扫描
<!--引入db.properties文件-->
<context:property-placeholder location="classpath:db.properties"/>
<!--配置druid连接池依赖于 db.properties 生成dataSource对象-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.jdbcUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--mybatis整合spring-->
<!--配置SqlSessionFactory对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
<property name="typeAliasesPackage" value="com.zhiyou100.pojo"/>
</bean>
<!--配置mapper扫描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.zhiyou100.mapper"/>
</bean>
6.在spring 目录之下创建applicationContext-Service.xml文件
主要是配置扫描service组件
<!--配置扫描Service组件-->
<context:component-scan base-package="com.zhiyou100.service"/>
7.在spring目录下创建 applicationContext-tx.xml文件
配置事务
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--依赖于数据源-->
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置事务的通知属性-->
<tx:advice transaction-manager="transactionManager" id="txAdvice">
<tx:attributes>
<tx:method name="find*" propagation="REQUIRED" read-only="true" isolation="DEFAULT" timeout="-1"/>
<tx:method name="select*" propagation="REQUIRED" read-only="true" isolation="DEFAULT" timeout="-1"/>
<tx:method name="get*" propagation="REQUIRED" read-only="true" isolation="DEFAULT" timeout="-1"/>
<tx:method name="query*" propagation="REQUIRED" read-only="true" isolation="DEFAULT" timeout="-1"/>
<tx:method name="add*" propagation="REQUIRED" read-only="false" isolation="DEFAULT" timeout="-1"/>
<tx:method name="insert*" propagation="REQUIRED" read-only="false" isolation="DEFAULT" timeout="-1"/>
<tx:method name="append*" propagation="REQUIRED" read-only="false" isolation="DEFAULT" timeout="-1"/>
<tx:method name="delete*" propagation="REQUIRED" read-only="false" isolation="DEFAULT" timeout="-1"/>
<tx:method name="remove*" propagation="REQUIRED" read-only="false" isolation="DEFAULT" timeout="-1"/>
<tx:method name="update*" propagation="REQUIRED" read-only="false" isolation="DEFAULT" timeout="-1"/>
<tx:method name="modify*" propagation="REQUIRED" read-only="false" isolation="DEFAULT" timeout="-1"/>
</tx:attributes>
</tx:advice>
<!--配置aop-->
<aop:config>
<!--配置切入点表达式-->
<aop:pointcut id="pct" expression="execution(* com.zhiyou100.service.impl..*.*(..))"/>
<!--绑定通知和切入点表达式-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pct"/>
</aop:config>
8.在mybatis目录下创建mybatis-config.xml文件(目前里面没有东西)
9.配置web.xml文件
- 配置上下文监听器 ContextLoaderListener 读取spring配置文件
- 配置前端控制器 DispatcherServlet 读取springmvc.xml配置文件
<!--配置上下文监听器-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-*.xml</param-value>
</context-param>
<!--监听器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置前端控制器-->
<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:spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--配置DispatcherServlet路由映射-->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern><!--使用扩展名匹配-->
</servlet-mapping>
10.创建mapper util pojo包以及对应的类
// RoleMapper 接口
public interface RoleMapper {
// 查询所有的角色信息
List<Role> getAllRoles();
// 添加一条Role记录
void addRole(Role role);
}
//Role实体类
public class Role implements Serializable {
//按照数据库中的字段匹配
private Integer r_id;
private String r_name;
private String r_desc;
private Date r_rTime;