# SSM框架搭建 **Repository Path**: jackierchan/buildSSM ## Basic Information - **Project Name**: SSM框架搭建 - **Description**: SSM框架搭建,集成了一个小demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-03-29 - **Last Updated**: 2024-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SSM框架搭建 **👵👵👵需求**: 🐱‍🚀🐱‍🚀🐱‍🚀使用ssm框架完成对 account 表的增删改查操作。 💖💖💖最后,框架搭建完后阿红,手写了一个完整的CRUD的demo,请看第9章节··· **步骤分析👀👀👀** 1. 准备数据库和表记录 2. 创建web项目 3. 编写mybatis在ssm环境中可以单独使用 4. 编写spring在ssm环境中可以单独使用 5. spring整合mybatis 6. 编写springMVC在ssm环境中可以单独使用 7. spring整合springMVC ## 1. 准备数据库和表记录 ```java CREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, `money` double DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; insert  into `account`(`id`,`name`,`money`) values (1,'tom',1000), (2,'jerry',1000); ``` ## 2. 创建web项目 ![image-20220313143357429](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313143357429.png) ## 3.编写mybatis在ssm环境中可以单独使用 ### 3.1 导入相关依赖 ```java war mysql mysql-connector-java 5.1.47 com.alibaba druid 1.1.15 org.mybatis mybatis 3.5.4 junit junit 4.12 test ``` ### 3.2 创建Account实体 ```java public class Account { private Integer id; private String name; private String money; //省略get和set方法 } ``` ### 3.3 创建AccountDao接口 ```java /** * 查询所有信息 * @return */ List findAll(); ``` ### 3.4 创建AccountDao.xml映射文件 ```java ``` ### 3.5 创建mybatis核心配置文件 **jdbc.properties文件:** ```xml jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/smd jdbc.username=root jdbc.password=root ``` **SqlMapConfig.xml文件:** ```java ``` ### 3.6 测试代码 ```java public class MyTest { @Test public void findAccountInfo() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); AccountDao accountDao = sqlSession.getMapper(AccountDao.class); List listAccount = accountDao.findAll(); for (Account account : listAccount) { System.out.println(account); } // 释放资源 sqlSession.close(); } } ``` ### 3.7 测试结果 ![image-20220313144327579](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313144327579.png) ## 4. 编写spring在ssm环境中可以单独使用 ### 4.1相关坐标 ```java org.springframework spring-context 5.2.15.RELEASE org.aspectj aspectjweaver 1.8.13 org.springframework spring-jdbc 5.0.6.RELEASE org.springframework spring-tx 5.2.15.RELEASE org.springframework spring-test 5.1.5.RELEASE ``` ### 4.2 创建AccountService接口 ```java public interface AccountService { List findAccount(); } ``` ### 4.3 创建AccountServiceImpl实现 ```java @Service public class AccountServiceImpl implements AccountService { @Override public List findAccount() { System.out.println("执行了业务方法!"); return null; } } ``` ### 4.4 创建spring核心配置文件 applicationContext.xml: ```xml ``` ### 4.5 测试代码 ```java @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class SpringTest { @Autowired private AccountService accountService; @Test public void test1(){ accountService.findAccount(); } } ``` ### 4.6 测试结果 ![image-20220313145643515](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313145643515.png) ## 5. spring整合mybatis ### 5.1 整合思想: 将mybatis接口代理对象的创建权交给spring管理,我们就可以把dao的代理对象注入到service中,此时也就完成了spring与mybatis的整合了。 也就是摒弃这几行代码,通过代理对象注入到service中。 ![image-20220313150021856](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313150021856.png) ### 5.2 导入整合包 ```java org.mybatis mybatis-spring 1.3.1 ``` ### 5.3 spring配置文件管理mybatis **注意:此时可以将mybatis主配置文件删除。** ```xml ``` ### 5.4 修改AccountServiceImpl ```java @Service public class AccountServiceImpl implements AccountService { @Autowired private AccountDao accountDao; @Override public List findAccount() { System.out.println("开始查询数据库信息!"); List list = accountDao.findAll(); return list; } } ``` ### 5.5 运行结果 ![image-20220313162417620](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313162417620.png) ## 6. 配置springMVC在ssm环境中可以单独使用 访问到controller里面的方法查询所有账户,并跳转到list.jsp页面进行列表展示 ### 6.1 导入相关依赖 ```xml org.springframework spring-webmvc 5.1.5.RELEASE javax.servlet javax.servlet-api 3.1.0 javax.servlet.jsp jsp-api 2.2 jstl jstl 1.2 ``` ### 6.2 导入页面资源 ![image-20220313181005983](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313181005983.png) ### 6.3 配置前端控制器DispathcerServlet ```xml DispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-mvc.xml 2 DispatcherServlet / CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 CharacterEncodingFilter /* 404 /404.jsp 500 /500.jsp org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml ``` ### 6.4 AccountController和 list.jsp ```java @Controller public class AccountController { @RequestMapping("/findAll") public String findAll(Model model){ Account account = new Account(); List list = new ArrayList<>(); account.setId(1); account.setName("张三"); account.setMoney("1000"); list.add(account); model.addAttribute("list",list); return "list"; } } ``` ```java ${account.id} ${account.name} ${account.money} 修改 删除 ``` ### 6.5 配置springMVC核心配置文件 ```xml ``` ## 7. spring整合springMVC ### 7.1 整合思想 spring和springMVC其实根本就不用整合,本来就是一家。 但是我们需要做到spring和web容器整合,让web容器启动的时候自动加载spring配置文件,web容器销毁的时候spring的ioc容器也销毁。 ### 7.2 spring和web容器整合 **ContextLoaderListener加载【掌握】** 可以使用spring-web包中的ContextLoaderListener监听器,可以监听servletContext容器的创建和销毁,来同时创建或销毁IOC容器。 ```java org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml ``` ### 7.3 修改AccountController ```java @Controller public class AccountController { @Autowired private AccountService accountService; @RequestMapping("/findAll") public String findAll(Model model){ List account = accountService.findAccount(); model.addAttribute("list",account); return "list"; } } ``` ## 8. spring配置声明式事务 ```java ``` ------ ## 9. 框架演示 ❤❤❤最后为了,框架的完整性,阿红特地写了一个demo ✨✨框架适用于毕业设计、或者大作业,需要的私信博主,或者直接下载也行 🎃项目功能有: 1. 查询账户所有基本信息 2. 实现账户信息的修改 3. 实现单条或多条信息的删除 🥠运行后项目主页: ![image-20220313211250823](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313211250823.png) 🍿查询所有账户信息页面: * url请求地址为:http://localhost:8080/SSM/account/findAll ![image-20220314200508786](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220314200508786.png) 🥞修改对应账户信息页面 * 跳转页面,并查询出对应的数据进行回显 ![image-20220314200827214](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220314200827214.png) 🏎可多选或单选删除对应账户信息 ![image-20220314200927162](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220314200927162.png) ❤❤❤都看到这了,动动小手点个关注吧❤❤❤ ❤❤❤都看到这了,动动小手点个关注吧❤❤❤ ❤❤❤都看到这了,动动小手点个关注吧❤❤❤ 以上均为所有SSM的配置整合,整理不易,喜欢的请关注关注阿红。 ![image-20220313210138954](https://gitee.com/jackierchan/jackier-chan_blog/raw/master/img/image-20220313210138954.png)