七、SSM 框架整合

news/2024/7/7 18:41:51

       目前已经学习了 MyBatis 框架,Spring 框架,以及Spring MVC 框架。现阶段学习将这三个框架整合到一起,实现简单的前后端交互的曾删改差功能页面。

       Mybatis 框架主要负责数据库的操作问题,以及数据回显。该框架将 SQL 与 Java 代码拆分开,降低耦合度的同时使代码可视程度更高,方便后期的 SQL 维护。

       Spring 框架主要负责解决在企业级开发时业务逻辑层与其他层之间有大量耦合现象。将 Java 对象的创建和管理交给 Spring IOC 容器处理,减少了很多的对象重复创建,主要理念就是:谁用这个对象就由谁来创建!而不是事前创建完成再去调用!

       Spring MVC 框架负责V-C交互的问题,即V(View:视图)和C(Controller:控制器)之间的交互问题,具体表现在:用户可以通过视图将请求数据提交给服务器端的控制器,而控制器可以接收到相关数据后进行处理,最终,给予客户端某个视图,使得客户端得到响应结果。

注:其实这些框架的出现就是为了实现一件事,代码解耦,优化程序!将原本写在一起的代码查分开来,各司其职,各自优化,使程序的开发过程更加简单,后续优化或者改动更加便捷,程序更加高效。


文章目录

  • 一、环境准备
  • 二、编辑 Dao 层(以及 MyBatis 相关配置)代码
  • 三、编辑 Service 层接口和实现类逻辑代码
  • 四、编辑 Spring 相关配置


一、环境准备


  • IDEA、MySql、Tomcat、Maven



  • 数据库准备

    • 创建数据库

      CREATE DATABASE `ssmbuild`;
      
    • 在 ssmbuild 库中创建相关的表并导入数据

      -- 指定ssmbuild 库
      USE `ssmbuild`;
      
      DROP TABLE IF EXISTS `books`;
      
      CREATE TABLE `books` (
      `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
      `bookName` VARCHAR(100) NOT NULL COMMENT '书名',
      `bookCounts` INT(11) NOT NULL COMMENT '数量',
      `detail` VARCHAR(200) NOT NULL COMMENT '描述',
      KEY `bookID` (`bookID`)
      ) ENGINE=INNODB DEFAULT CHARSET=utf8
      
      INSERT  INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES
      (1,'Java',1,'从入门到放弃'),
      (2,'MySQL',10,'从删库到跑路'),
      (3,'Linux',5,'从进门到进牢');
      

  • 项目准备

    • 创建基本的 maven 项目,并在 pom.xml 中导入相关依赖和姿态资源配置

      • 依赖准备

            <dependencies>
                <!--Junit-->
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.12</version>
                </dependency>
                <!--数据库驱动-->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.47</version>
                </dependency>
                <!-- 数据库连接池:c3p0 -->
                <dependency>
                    <groupId>com.mchange</groupId>
                    <artifactId>c3p0</artifactId>
                    <version>0.9.5.2</version>
                </dependency>
        
                <!--Servlet - JSP -->
                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                    <version>2.5</version>
                </dependency>
                <dependency>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                    <version>2.2</version>
                </dependency>
                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>jstl</artifactId>
                    <version>1.2</version>
                </dependency>
        
                <!--Mybatis-->
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                    <version>3.5.2</version>
                </dependency>
                
                <!-- Mybatis整合Spring-->
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                    <version>2.0.2</version>
                </dependency>
        
                <!--Spring-->
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-webmvc</artifactId>
                    <version>5.1.9.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-jdbc</artifactId>
                    <version>5.1.9.RELEASE</version>
                </dependency>
        
                <!-- Lombok工具 -->
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>1.18.12</version>
                    <scope>provided</scope>
                </dependency>
            </dependencies>
        
      • 静态资源配置

        <!-- 配置静态资源,避免找不到相关的文件 -->
            <build>
                <resources>
                    <resource>
                        <directory>src/main/java</directory>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                        </includes>
                        <filtering>false</filtering>
                    </resource>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                        </includes>
                        <filtering>false</filtering>
                    </resource>
                </resources>
            </build>
        
    • 在 Java 资源目录下创建之后需要的包
      在这里插入图片描述




二、编辑 Dao 层(以及 MyBatis 相关配置)代码


  • 在 pojo 包下创建 Books 表的实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Books {
    
        private int bookID;
        private String bookName;
        private int bookCounts;
        private String detail;
    }
    
  • 创建 Mapper 接口,以及与接口对应的 xml

    public interface BooksMapper {
    
        // 查询全部书籍信息
        List<Books> queryBooksAll();
    
        // 根据书籍ID查询
        List<Books> queryBooksId(@Param("bookID") int id);
    
        // 新增书籍
        int saveBooks(Books books);
    
        // 修改书籍信息
        int updateBooks(Books books);
    
        // 删除书籍
        int deleteBooks(Books books);
    }
    
  • 接口对应的 xml-BooksMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.sys.mapper.BooksMapper">
    
        <select id="queryBooksAll" resultType="com.sys.pojo.Books">
            select * from books
        </select>
    
        <select id="queryBooksId" resultType="com.sys.pojo.Books">
            select * from books where 1=1
            <if test="bookID != null">
                and bookID = #{bookID}
            </if>
        </select>
    
        <insert id="saveBooks" parameterType="com.sys.pojo.Books">
            insert into books (bookName, bookCounts, detail)
            values (#{bookName}, #{bookCounts}, #{detail})
        </insert>
    
        <update id="updateBooks" parameterType="com.sys.pojo.Books">
            update books set bookCounts = #{bookCounts} where 1=1
            <if test="bookID != null">
                and bookID = #{bookID}
            </if>
        </update>
    
        <delete id="deleteBooks" parameterType="com.sys.pojo.Books">
            delete from books where 1=1
            <if test="booksID != null">
                and booksID = #{booksID}
            </if>
        </delete>
    
    </mapper>
    
  • 在resources 资源目录下创建资源配置文件

    • 创建 MyBatis 配置文件:MyBatis-Config.xml

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE configuration
              PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
      
          <!-- 数据源不再由 MyBatis 负责,交给 Spring 来做  -->
      
          <!-- 配置实体 -->
          <typeAliases>
              <package name="com.sys.pojo"/>
          </typeAliases>
      
          <!-- 配置mapper接口 -->
          <mappers>
              <mapper class="com.sys.mapper.BooksMapper"/>
          </mappers>
      </configuration>
      
    • 创建数据源配置文件:database.properties

      jdbc.driver=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
      jdbc.username=root
      jdbc.password=root
      




三、编辑 Service 层接口和实现类逻辑代码


  • 在 service 包下创建接口

    public interface BooksService {
    
    
        // 查询全部书籍信息
        List<Books> queryBooksAll();
        
        // 根据ID查询
        List<Books> queryBooksId();
    
        // 新增书籍
        int saveBooks(Books books);
    
        // 修改书籍信息
        int updateBooks(Books books);
    
        // 删除书籍
        int deleteBooks(Books books);
        
    }
    
    • 创建对应的实现类

      @Service
      public class BooksServiceImpl implements BooksService {
      
          // 依赖注入,通过该 bean 调用其中的方法
          @Autowired
          BooksMapper bokksMapper;
      
          public List<Books> queryBooksAll() {
              List<Books> list = bokksMapper.queryBooksAll();
              return list;
          }
      
          public List<Books> queryBooksId() {
              List<Books> list = bokksMapper.queryBooksId(1);
              return list;
          }
      
          public int saveBooks(Books books) {
              Books book = new Books();
              book.setBookName("Java 八股文,背!");
              book.setBookCounts(5);
              book.setDetail("从Java基础到框架的知识点,面试需要背");
              return bokksMapper.saveBooks(book);
          }
      
          public int updateBooks(Books books) {
              Books book = new Books();
              book.setBookID(1);
              book.setBookCounts(4);
              return bokksMapper.updateBooks(books);
          }
      
          public int deleteBooks(Books books) {
              Books book = new Books();
              book.setBookID(3);
              return bokksMapper.deleteBooks(books);
          }
      }
      




四、编辑 Spring 相关配置


  • Spring 整合 Mybatis ,配置数据源,将数据源以 bean 的形式进行管理,创建 Spring-dao.xml


	- 创建 Spring 配置文件:applicationContext.xml

		```xml
		<?xml version="1.0" encoding="UTF-8"?>
		<beans xmlns="http://www.springframework.org/schema/beans"
		       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		       xsi:schemaLocation="http://www.springframework.org/schema/beans
		       http://www.springframework.org/schema/beans/spring-beans.xsd">
		
		</beans>
		```

http://lihuaxi.xjx100.cn/news/1518633.html

相关文章

语音增强-谱减法

导入相关包 import librosa import numpy as np import matplotlib.pyplot as plt from playsound import playsound import soundfile as sf 加载音源 # 干净的声音 clean_wav_file sf1_cln.wav clean, fs librosa.load(clean_wav_file, srNone) # 带噪音的声音 noise_w…

使用maven idea环境

创建模块工程后 idea三种方式执行maven命令 想在哪个工程模块上执行就点开哪一个 如果觉得双击完clean再双击install麻烦&#xff0c;可以 如果有需要还可以给命令后面加参数 ​​​ 第三种&#xff0c;在终端中打开&#xff0c;相当于通过idea进入了命令行 工程导入 导入模块…

L1和L2正则

L1和L2正则 L1正则常被用来进行特征选择&#xff0c;主要原因在于L1正则化会使得较多的参数为0&#xff0c;从而产生稀疏解&#xff0c;我们可以将0对应的特征遗弃&#xff0c;进而用来选择特征。一定程度上L1正则也可以防止模型过拟合。 L2正则&#xff1a; L1损失函数相比于…

SecureCRT 解决Log加时间设置

SecureCRT相比putty、MobaXTerm等调试工具有一个突出的优点&#xff0c;它的log功能非常好用&#xff0c;可以在每行log都加入时间戳&#xff0c;精确到毫秒&#xff0c;以下是CRT的log配置设置: 一: 打开Options Global Options–>Default Session–>Edit Default Set…

尼康D90使用心得

文章目录 规格参数快速指南相机机身模式拨盘控制面板取景器拍摄信息展示 核心功能指令拨盘拍摄模式自动模式场景模式快门速度和光圈 固件、软件、驱动升级更多细节参考 规格参数 型号尼康D90发布日期2008年08月机身特性APS-C规格数码单反产品定位中端单反传感器类型CMOS传感器…

javascript将数组中的数字类型元素保留两位小数

如果你想要将数组中的数字类型元素保留两位小数&#xff0c;你可以使用以下的方法。假设你的数组是JavaScript的数组&#xff0c;代码可能是这样的&#xff1a; var array [123.456, 456.789, 321.123]; // 原始数组 var newArray [];for (var i 0; i < array.length; i…

大数据课程K21——Spark的SparkSQL基础语法

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Spark的SparkSQL通过方法来使用; ⚪ 掌握Spark的SparkSQL通过sql语句来调用; 一、SparkSQL基础语法——通过方法来使用 1. 查询 df.select("id","name").show()…

STM32屏幕计时器

目录 一、最终效果二、实现思想三、实现过程3.1 屏幕显示3.2 中断处理 一、最终效果 显示屏显示计时时间&#xff0c;格式为 00:00:00&#xff0c;依次为 时:分:秒&#xff0c;程序运行之后自动计时&#xff0c;当按下按键&#xff0c;计时清零&#xff0c;按下按键采用外部中…