ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SSM整合_demo

2022-05-18 07:31:43  阅读:197  来源: 互联网

标签:jdbc return demo class SSM dataSource 整合 new public


整合流程

  • 创建maven工程

  • 创建文件目录结构:config、dao、domain、Service、controller

  • Spring环境搭建

    • xml坐标导入-springmvc

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <groupId>org.example</groupId>
          <artifactId>ssm_code</artifactId>
          <version>1.0-SNAPSHOT</version>
          <packaging>war</packaging>
      
          <!-- 依赖管理 -->
          <dependencies>
              <!-- SpringMVC(底层依赖Spring)-->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-webmvc</artifactId>
                  <version>5.2.10.RELEASE</version>
              </dependency>
      
          </dependencies>
          <properties>
              <maven.compiler.source>8</maven.compiler.source>
              <maven.compiler.target>8</maven.compiler.target>
          </properties>
      
      </project>
      
    • SpringConfig

      @Configuration
      @ComponentScan("com.itcase.service")
      public class SpringConfig {
      }
      
    • domain实体类

  • Spring整合Mybatis:业务层和持久层

    • xml坐标导入

              <!-- Spring整合Mybatis -->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis-spring</artifactId>
                  <version>1.3.0</version>
              </dependency>
      
              <!-- Spring JDBC : 声明式事务 -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-jdbc</artifactId>
                  <version>5.2.10.RELEASE</version>
              </dependency>
      
              <!-- Spring整合Junit -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-test</artifactId>
                  <version>5.2.10.RELEASE</version>
              </dependency>
      
              <!-- MySQL -->
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.47</version>
              </dependency>
      
              <!-- Mybatis -->
              <dependency>
                  <groupId>org.mybatis</groupId>
                  <artifactId>mybatis</artifactId>
                  <version>3.5.6</version>
              </dependency>
      
              <!-- druid连接池 -->
              <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>druid</artifactId>
                  <version>1.2.1</version>
              </dependency>
      
              <!-- Junit -->
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.12</version>
                  <scope>test</scope>
              </dependency>
      
    • jdbc配置

      jdbc.driver=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm_db?useSSL=false&characterEncoding=utf8
      jdbc.username=root
      jdbc.password=root
      
    • JdbcConfig配置:配置连接池、事务管理器

      //配置:连接池、事务管理器
      public class JdbcConfig {
          @Value("${jdbc.driver}")
          private String driver;
          @Value("${jdbc.url}")
          private String url;
          @Value("${jdbc.username}")
          private String username;
          @Value("${jdbc.password}")
          private String password;
      
          //设置连接池
          @Bean
          public DataSource dataSource(){
              DruidDataSource dataSource = new DruidDataSource();
              dataSource.setDriverClassName(driver);
              dataSource.setUrl(url);
              dataSource.setUsername(username);
              dataSource.setPassword(password);
              return dataSource;
          }
      
          //设置事务管理器 (声明式事务)
          @Bean
          public PlatformTransactionManager transactionManager(DataSource dataSource){
              //PlatformTransactionManager是DataSourceTransactionManager的父接口
              DataSourceTransactionManager dstm = new DataSourceTransactionManager();
              dstm.setDataSource(dataSource);
              return dstm;
          }
      }
      
    • MybatisConfig配置

      //Mybatis配置类
      public class MybatisConfig {
          @Bean
          public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource ds){
              SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
              //设置pojo的包扫描
              factoryBean.setTypeAliasesPackage("com.itcase.domain");
              //设置连接池
              factoryBean.setDataSource(ds);
              return factoryBean;
          }
      
          @Bean
          public MapperScannerConfigurer mapperScannerConfigurer(){
              MapperScannerConfigurer msc = new MapperScannerConfigurer();
              //设置dao层的接口扫描
              msc.setBasePackage("com.itcase.dao");
              return msc;
          }
      }
      

      更新SpringConfig配置类

      @Configuration//Spring配置类
      @ComponentScan("com.itcase.service")//扫描指定包下的类,并添加到Ioc容器
      @PropertySource("classpath:db.properties")//加载外部配置文件
      @Import({JdbcConfig.class,MybatisConfig.class})//引入配置类
      @EnableWebMvc//开启事物管理支持
      public class SpringConfig {
      }
      
      
    • dao层代码

    • service层代码:接口+实现类

      增加@Transactional事务声明

  • SpringMVC整合:业务层和表现层

    • XML坐标导入:JSON、Servlet

              <!-- Servlet -->
              <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet-api</artifactId>
                  <version>3.1.0</version>
                  <scope>provided</scope>
              </dependency>
      
              <!-- Jackson : 实现json格式和javabean之间的数据转换 -->
              <dependency>
                  <groupId>com.fasterxml.jackson.core</groupId>
                  <artifactId>jackson-databind</artifactId>
                  <version>2.9.0</version>
              </dependency>
      
    • SpringMVC配置

      @Configuration
      @ComponentScan("com.itcase.controller")
      @EnableWebMvc //JSON自动转换
      public class SpringmvcConfig {
      }
      
    • Web容器配置

      public class ServletInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
          @Override
          protected Class<?>[] getRootConfigClasses() {
              //指定spring配置类加载(根配置)
              return new Class[]{SpringConfig.class};
          }
      
          @Override
          protected Class<?>[] getServletConfigClasses() {
              //指定springmvc配置类加载
              return new Class[]{SpringmvcConfig.class};
          }
      
          @Override
          protected String[] getServletMappings() {
              //配置springmvc拦截路径为 / (全路径)
              return new String[]{"/"};
          }
      
          //中文乱码过滤器
          @Override
          protected Filter[] getServletFilters() {
              CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
              encodingFilter.setEncoding("utf-8");
              return new Filter[]{encodingFilter};
          }
      }
      
    • 编写Controller层代码

      @RestController
      @RequestMapping("/book")
      public class BookController {
          @Autowired
          private BookService bookService;
      
          @PostMapping
          public boolean save(@RequestBody Book book) {
              return bookService.saveBook(book);
          }
      
          @PutMapping
          public boolean update(@RequestBody Book book) {
              return bookService.updateBook(book);
          }
      
          @DeleteMapping("/{id}")
          public boolean delete(@PathVariable Integer id) {
              return bookService.deleteBookById(id);
          }
      
          @GetMapping("/{id}")
          public Book getById(@PathVariable Integer id) {
              return bookService.getBookById(id);
          }
      
          @GetMapping
          public List<Book> getAll() {
              return bookService.getAllBook();
          }
      }
      
      
    • Tomcat配置

  • 联合postman测试

  • 封装表现层数据

  • SpringMVC异常处理器

    @RestControllerAdvice
    public class ProjectExceptionAdvice {
        //专门处理业务功能导致的异常
        @ExceptionHandler(BusinessException.class)
        public Result doBusinessException(BusinessException ex){
            //发送对应消息传递给用户,提醒规范操作
            return new Result(ex.getCode(),ex.getMessage());
        }
    
        //专门处理系统异常
        @ExceptionHandler(SystemException.class)
        public Result doSystemException(SystemException ex){
            //发送固定消息传递给用户,安抚用户
            //发送特定消息给运维人员,提醒维护
            //记录日志
            return new Result(ex.getCode(),ex.getMessage());
        }
    
        //处理其他未知异常
        @ExceptionHandler(Exception.class)
        public Result doException(Exception ex){
            //发送固定消息传递给用户,安抚用户
            //发送特定消息给编程人员,提醒维护
            //记录日志
            return new Result(Code.SYSTEM_UNKNOW_ERR,"服务器正在维护,请稍后访问");
        }
    }
    
  • SpringMVC拦截器使用

    自定义拦截器(通知)

    配置拦截器拦截规则(切入点)

    修改SpringmvcConfig配置(新增扫描config包)

文件目录结构

标签:jdbc,return,demo,class,SSM,dataSource,整合,new,public
来源: https://www.cnblogs.com/albert-liu/p/16283174.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有