# ssm **Repository Path**: YYR_KM/ssm ## Basic Information - **Project Name**: ssm - **Description**: Spring、springMVC、Mybatis整合 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-21 - **Last Updated**: 2023-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SSM整合 [https://blog.csdn.net/jsdoulaoula/article/details/124670653?spm=1001.2014.3001.5501](https://blog.csdn.net/jsdoulaoula/article/details/124670653?spm=1001.2014.3001.5501) ## ssm整合 ### 步骤分析 我们先来分析下如何把Spring、SpringMVC、MyBatis整合到一起。 #### 步骤 1.Spring整合上MyBatis 通过Service层Dao层都注入Spring容器中 2.引入配置SpringMVC 把Controller层注入SpringMVC容器中 3.让web项目启动时自动读取Spring配置文件来创建Spring容器 可以使用ContextLoaderListener来实现Spring容器的创建。 ![1](C:\Users\DELL\Desktop\1.jpg) #### 常见疑惑 为什么要用两个容器? 因为Controller如果不放在MVC容器中会没有效果,无法处理请求。而Service如果不放在Spring容器中,声明式事务也无法使用。 SpringMVC容器中的Controller需要依赖Service,能从Spring容器中获取到所依赖的Service对象嘛? Spring容器相当于是父容器,MVC容器相当于是子容器。子容器除了可以使用自己容器中的对象外还可以使用父容器中的对象。 ### 准备工作 引入所有依赖 ``` org.springframework spring-context 5.1.9.RELEASE org.aspectj aspectjweaver 1.8.13 org.springframework spring-jdbc 5.1.9.RELEASE org.mybatis mybatis-spring 2.0.4 org.mybatis mybatis 3.5.4 log4j log4j 1.2.17 com.github.pagehelper pagehelper 4.0.0 mysql mysql-connector-java 5.1.47 com.alibaba druid 1.1.16 junit junit 4.12 org.springframework spring-test 5.1.9.RELEASE org.projectlombok lombok 1.18.12 provided javax.servlet javax.servlet-api 3.1.0 provided javax.servlet.jsp jsp-api 2.1 provided org.springframework spring-webmvc 5.1.9.RELEASE com.fasterxml.jackson.core jackson-databind 2.9.0 commons-fileupload commons-fileupload 1.4 ``` 数据库初始化语句 ``` DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, `address` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; insert into `user`(`id`,`username`,`age`,`address`) values (1,'UZI',19,'上海'),(2,'PDD',25,'上海'); ``` ### 相关配置 #### 整合Spring和Mybatis 在resources目录下创建Spring核心配置文件: **applicationContext.xml** 内容如下 ``` ``` 在resources目录下创建**jdbc.properties** 文件,内容如下: ``` jdbc.url=jdbc:mysql://localhost:3306/ssmbuild jdbc.driver=com.mysql.jdbc.Driver jdbc.username=root jdbc.password="000000" ``` 在resources目录下创建**mybatis-config.xml** ,内容如下: ``` ``` 在resources目录下创建**log4j.properties** ,内容如下: ``` ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c:/mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=debug, stdout ``` #### SpringMVC引入 在resources目录下创建**spring-mvc.xml** ,内容如下: ``` ``` 修改web.xml文件 ``` DispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-mvc.xml 1 DispatcherServlet / CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 CharacterEncodingFilter /* ``` #### Spring整合入web项目 让web项目启动的时候就能够创建Spring容器。可以使用Spring提供的监听器ContextLoaderListener,所以我们需要再web.xml中配置这个监听器,并且配置上Spring配置文件的路径。 ``` contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener ``` ### 编写Controller、Service、Dao 我们来编写根据id查询用户的接口来测试 编写Controller ``` package com.yyr.test.controller; import com.yyr.test.domain.User; import com.yyr.test.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; //@Controller //@ResponseBody @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/user/{id}") public User findById(@PathVariable("id") Integer id){ User user=userService.findById(id); return user; } } ``` 编写service ``` package com.yyr.test.service; import com.yyr.test.domain.User; public interface UserService { User findById(Integer id); } ``` 编写service实现类 ``` package com.yyr.test.service.impl; import com.yyr.test.domain.User; import com.yyr.test.dao.UserDao; import com.yyr.test.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; public User findById(Integer id) { return userDao.findById(id); } } ``` 编写dao ``` package com.yyr.test.dao; import com.yyr.test.domain.User; public interface UserDao { User findById(Integer id); } ``` 编写对应的mapperxml映射文件 ``` ``` tomcat启动 ![结果](C:\Users\DELL\Desktop\结果.jpg)