SSM 整合(Spring + MyBatis;Spring + Spring MVC)
创始人
2024-12-28 19:36:49
0

1. SSM 整合(Spring + MyBatis;Spring + Spring MVC)

文章目录

  • 1. SSM 整合(Spring + MyBatis;Spring + Spring MVC)
  • 2. 引入相关依赖
  • 3. SSM 整合
    • 3.1 创建包结构
  • 4. Spring 整合 + MyBatis
    • 4.1 编写 jdbc.properties
    • 4.2 编写 DataSourceConfig 数据源配置
    • 4.3 编写 MyBatisConfig 的配置类(替换 mybatis的xml配置文件)
    • 4.4 编写 SpringConfig 的配置类(替换spring的xml配置文件)
  • 5. Spring 整合 Spring MVC
    • 5.1 编写WebAppInitializer(替换 web.xml 文件)
    • 5.2 编写 SpringMvcConfig 类(替换spring mvc 的xml 配置文件)
    • 5.3 添加事务控制
  • 6. 实现功能测试ssm整合
    • 6.1 准备数据表
    • 6.2 pojo类编写
    • 6.3 dao编写
    • 6.4 service编写
    • 6.5 handler编写
    • 6.6 前端发送ajax
      • 6.6.1 引入 js 文件
      • 6.6.2 开启静态资源处理
      • 6.6.3 视图控制器
      • 6.6.4 编写ajax
  • 7. 运行启动 Tomcat 测试
  • 8. 最后:


2. 引入相关依赖

在这里插入图片描述

      4.0.0     war      com.rainbowsea     ssm-annotation     1.0-SNAPSHOT               17         17                                          org.springframework             spring-webmvc             6.1.4                                        org.springframework             spring-jdbc             6.1.4                                        org.mybatis             mybatis             3.5.15                                        org.mybatis             mybatis-spring             3.0.3                                        com.mysql             mysql-connector-j             8.3.0                                        com.alibaba             druid             1.2.22                                        com.fasterxml.jackson.core             jackson-databind             2.17.0                                        jakarta.servlet             jakarta.servlet-api             6.0.0             provided                                        ch.qos.logback             logback-classic             1.5.3                                        org.thymeleaf             thymeleaf-spring6             3.1.2.RELEASE                 

3. SSM 整合

3.1 创建包结构

在这里插入图片描述


SSM:包括 Spring ,MyBatis,Spring MVC

SSM 的整合:可以大致分为两部分:

  • Spring + MyBatis 的整合
  • Spring + Spring MVC 的整合

4. Spring 整合 + MyBatis

4.1 编写 jdbc.properties

在类根路径下创建属性配置文件,配置连接数据库的信息:jdbc.properties

在这里插入图片描述

jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/springmvc jdbc.username=root jdbc.password=MySQL123 

4.2 编写 DataSourceConfig 数据源配置

在这里插入图片描述

在这里插入图片描述

package com.rainbowsea.ssm.config;   import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  import javax.sql.DataSource;   /**  * 数据源配置  */ @Configuration public class DataSourceConfig {      @Value("${jdbc.driver}")     private String driver;       @Value("${jdbc.url}")     private String url;       @Value("${jdbc.username}")     private String username;       @Value("${jdbc.password}")     private String password;      public DataSourceConfig() {     }      public DataSourceConfig(String driver, String url, String username, String password) {         this.driver = driver;         this.url = url;         this.username = username;         this.password = password;     }       @Bean     public DataSource dataSource() {         DruidDataSource druidDataSource = new DruidDataSource();         druidDataSource.setDriverClassName(driver);         druidDataSource.setUrl(url);         druidDataSource.setUsername(username);         druidDataSource.setPassword(password);         return druidDataSource;     } }  

4.3 编写 MyBatisConfig 的配置类(替换 mybatis的xml配置文件)

在这里插入图片描述

package com.rainbowsea.ssm.config;  import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.mapper.MapperScannerConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  import javax.sql.DataSource;  @Configuration public class MyBatisConfig {       @Bean     public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {         SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();         sqlSessionFactoryBean.setDataSource(dataSource);         sqlSessionFactoryBean.setTypeAliasesPackage("com.rainbowsea.ssm.bean");         return sqlSessionFactoryBean;     }       @Bean     public MapperScannerConfigurer mapperScannerConfigurer() {         MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();         mapperScannerConfigurer.setBasePackage("com.rainbowsea.ssm.dao");         return mapperScannerConfigurer;     } }  

4.4 编写 SpringConfig 的配置类(替换spring的xml配置文件)

在这里插入图片描述

package com.rainbowsea.ssm.config;   import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement;  import javax.sql.DataSource;  // 标注该类式一个配置文件类 @Configuration // 组件扫描 @ComponentScan("com.rainbowsea.ssm.service") // 属性配置文件位置 @PropertySource("classpath:jdbc.properties") // 导入其他配置到Spring 配置 @Import({MyBatisConfig.class,DataSourceConfig.class}) // 开启事务管理器 @EnableTransactionManagement public class SpringConfig {       // 在 DataSourceConfig中添加事务管理器对象     @Bean     public PlatformTransactionManager platformTransactionManager(DataSource dataSource){         DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();         dataSourceTransactionManager.setDataSource(dataSource);         return dataSourceTransactionManager;     } }  

5. Spring 整合 Spring MVC

5.1 编写WebAppInitializer(替换 web.xml 文件)

在这里插入图片描述

package com.rainbowsea.ssm.config;  import jakarta.servlet.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.web.filter.CharacterEncodingFilter; import org.springframework.web.filter.HiddenHttpMethodFilter; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;  @Configuration public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {     /**      * Spring的配置      *      * @return      */     @Override     protected Class[] getRootConfigClasses() {         return new Class[]{SpringConfig.class};     }      /**      * SpringMVC的配置      *      * @return      */     @Override     protected Class[] getServletConfigClasses() {         return new Class[]{SpringMvcConfig.class};     }      /**      * 用来配置DispatcherServlet的       *      * @return      */     @Override     protected String[] getServletMappings() {         return new String[]{"/"};     }      /**      * 配置过滤器      *      * @return      */     @Override     protected Filter[] getServletFilters() {         // 配置字符编码过滤器         CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();         characterEncodingFilter.setEncoding("UTF-8");         characterEncodingFilter.setForceResponseEncoding(true);         characterEncodingFilter.setForceRequestEncoding(true);         // 配置HiddenHttpMethodFilter         HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();         return new Filter[]{characterEncodingFilter, hiddenHttpMethodFilter};     } }  

5.2 编写 SpringMvcConfig 类(替换spring mvc 的xml 配置文件)

在这里插入图片描述

package com.rainbowsea.ssm.config;  import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring6.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver;  import java.util.List;  @Configuration  // 标志是配置文件类 @ComponentScan("com.rainbowsea.ssm.handler") @EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer {     // 以下三个方法合并起来就是开启视图解析器      @Bean     public ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine) {         ThymeleafViewResolver resolver = new ThymeleafViewResolver();         resolver.setTemplateEngine(springTemplateEngine);         resolver.setCharacterEncoding("UTF-8");         resolver.setOrder(1);         return resolver;     }      @Bean     public SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver) {         SpringTemplateEngine templateEngine = new SpringTemplateEngine();         templateEngine.setTemplateResolver(iTemplateResolver);         return templateEngine;     }      @Bean     public ITemplateResolver templateResolver(ApplicationContext applicationContext) {         SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();         resolver.setApplicationContext(applicationContext);         resolver.setPrefix("/WEB-INF/thymeleaf/");         resolver.setSuffix(".html");         resolver.setTemplateMode(TemplateMode.HTML);         resolver.setCharacterEncoding("UTF-8");         resolver.setCacheable(false);//开发时关闭缓存,改动即可生效.发布时,打开         return resolver;     }      // 开启静态资源处理,开启默认的Servlet处理     @Override     public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {         configurer.enable();     }      // 视图控制器     @Override     public void addViewControllers(ViewControllerRegistry registry) {         registry.addViewController("/").setViewName("index");     }      // 配置异常处理器     @Override     public void configureHandlerExceptionResolvers(List resolvers) {     }      // 配置拦截器     @Override     public void addInterceptors(InterceptorRegistry registry) {     } } 

5.3 添加事务控制

第一步:在SpringConfig中开启事务管理器

@EnableTransactionManagement public class SpringConfig { } 

第二步:在DataSourceConfig中添加事务管理器对象

@Bean public PlatformTransactionManager platformTransactionManager(DataSource dataSource){     DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();     dataSourceTransactionManager.setDataSource(dataSource);     return dataSourceTransactionManager; } 

第三步:在service类上添加如下注解:(如果有的话)

@Transactional public class UserService {} 

在这里插入图片描述


6. 实现功能测试ssm整合

6.1 准备数据表

在这里插入图片描述

在这里插入图片描述

6.2 pojo类编写

在这里插入图片描述

package com.rainbowsea.ssm.bean;   import org.springframework.stereotype.Controller;  @Controller public class User {      private Long id;      private String name;      private String password;      private String email;       public User() {     }      public User(Long id, String name, String password, String email) {         this.id = id;         this.name = name;         this.password = password;         this.email = email;     }       public Long getId() {         return id;     }      public void setId(Long id) {         this.id = id;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public String getPassword() {         return password;     }      public void setPassword(String password) {         this.password = password;     }      public String getEmail() {         return email;     }      public void setEmail(String email) {         this.email = email;     } }  

6.3 dao编写

在这里插入图片描述

package com.rainbowsea.ssm.dao;  import com.rainbowsea.ssm.bean.User; import org.apache.ibatis.annotations.Select;     public interface UserDao {      @Select("select * from tbl_user where id = #{id}")     User selectById(Long id);  } 

6.4 service编写

在这里插入图片描述

package com.rainbowsea.ssm.service;  import com.rainbowsea.ssm.bean.User;     public interface UserService {      /**      * 根据用户id获取用户信息      */      User getById(Long id); }  

在这里插入图片描述

package com.rainbowsea.ssm.service.impl;  import com.rainbowsea.ssm.bean.User; import com.rainbowsea.ssm.dao.UserDao; import com.rainbowsea.ssm.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;   @Service public class UserServiceImpl implements UserService {      @Autowired     private UserDao userDao;     @Override     public User getById(Long id) {         return userDao.selectById(id);     } }  

6.5 handler编写

在这里插入图片描述

package com.rainbowsea.ssm.handler;  import com.rainbowsea.ssm.bean.User; import com.rainbowsea.ssm.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.RequestMapping; import org.springframework.web.bind.annotation.RestController;  @RestController @RequestMapping("/users") public class UserHandler {      @Autowired     private UserService userService;      @GetMapping("/{id}")     public User detail(@PathVariable("id") Long id){         User user = userService.getById(id);         return user;     } } 

6.6 前端发送ajax

6.6.1 引入 js 文件

在这里插入图片描述

6.6.2 开启静态资源处理

@Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {     configurer.enable(); } 

在这里插入图片描述

6.6.3 视图控制器

public void addViewControllers(ViewControllerRegistry registry) {     registry.addViewController("/").setViewName("index"); } 

在这里插入图片描述

6.6.4 编写ajax

在这里插入图片描述

        ssm整合               

{{message}}

7. 运行启动 Tomcat 测试

在这里插入图片描述

8. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

相关内容

热门资讯

专业讨论!德扑之星真破解套路(... 专业讨论!德扑之星真破解套路(辅助挂)软件透明挂(有挂了解)-哔哩哔哩;人气非常高,ai更新快且高清...
每日必看!智星德州菠萝外挂检测... 每日必看!智星德州菠萝外挂检测(辅助挂)软件透明挂(有挂教学)-哔哩哔哩1、玩家可以在智星德州菠萝外...
透视透明挂!轰趴十三水有后台(... 轰趴十三水有后台赢率提升策略‌;透视透明挂!轰趴十三水有后台(辅助挂)软件透明挂(有挂详情)-哔哩哔...
发现玩家!德扑ai助手软件(辅... 发现玩家!德扑ai助手软件(辅助挂)透视辅助(有挂教学)-哔哩哔哩;玩家在德扑ai助手软件中需先进行...
一分钟了解!x-poker辅助... 一分钟了解!x-poker辅助软件(辅助挂)辅助透视(有挂攻略)-哔哩哔哩1、每一步都需要思考,不同...
一分钟揭秘!德州最新辅助器(辅... 一分钟揭秘!德州最新辅助器(辅助挂)透视辅助(有挂攻略)-哔哩哔哩;德州最新辅助器最新版本免费下载安...
玩家攻略推荐!德州辅助(辅助挂... 玩家攻略推荐!德州辅助(辅助挂)辅助透视(有挂了解)-哔哩哔哩是由北京得德州辅助黑科技有限公司精心研...
揭秘真相!pokernow德州... 《揭秘真相!pokernow德州(辅助挂)辅助透视(有挂介绍)-哔哩哔哩》 pokernow德州软件...
五分钟了解!德州之星辅助器(辅... 五分钟了解!德州之星辅助器(辅助挂)辅助透视(有挂透明)-哔哩哔哩1、很好的工具软件,可以解锁游戏的...
推荐一款!pokermaste... 1、推荐一款!pokermaster有外挂(辅助挂)透视辅助(有挂教学)-哔哩哔哩;详细教程。2、p...