热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【后端】SSM(Spring+SpringMVC+Mybatis)框架整合(一)

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简

SSM(Spring+SpringMVC+MyBatis)框架集由SpringMyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。

常作为数据源较简单的web项目的框架。

Spring

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。

SpringMVC

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

Mybatis

mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

SSM整合

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。



本博客按照【狂神说Java】SSM框架最新整合教学IDEA版_哔哩哔哩_bilibili 进行SSM整合(对应视频 P1-P3 部分)

后续更新相关功能实现(对应视频 P4-P7 部分)

!部分代码和视频有出入 请自行检查比对


✨数据库

CREATE DATABASE `ssm_build`;

USE `ssm_build`;

DROP TABLE IF EXISTS `books`;

CREATE TABLE `books` (
`book_id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
`book_name` VARCHAR(100) NOT NULL COMMENT '书名',
`book_counts` INT(11) NOT NULL COMMENT '数量',
`book_detail` VARCHAR(200) NOT NULL COMMENT '描述',
KEY `book_id` (`book_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT  INTO `books`(`book_id`,`book_name`,`book_counts`,`book_detail`)VALUES
(1,'《Java核心技术》',1,'Java入门'),
(2,'《Effective Java》',10,'Java进阶'),
(3,'《深入理解Java虚拟机》',10,'JVM'),
(4,'《A Byte of Python》',10,'Python入门'),
(5,'《大话设计模式》',10,'设计模式');

✨Maven

依赖


    

        
            junit
            junit
            4.13.2
        

        
                mysql
                mysql-connector-java
                5.1.49
        

        
            com.mchange
            c3p0
            0.9.5.5
        


        
            javax.servlet
            servlet-api
            2.5
        
        
            javax.servlet.jsp
            jsp-api
            2.2
        
        
            javax.servlet
            jstl
            1.2
        


        
            org.mybatis
            mybatis
            3.5.7
        
        
            org.mybatis
            mybatis-spring
            2.0.6
        


        
            org.springframework
            spring-webmvc
            5.3.9
        
        
            org.springframework
            spring-jdbc
            5.3.9
        


        
            org.projectlombok
            lombok
            1.18.20
        
    

静态资源导出


    
        
            
                src/main/java
                
                    **/*.properties
                    **/*.xml
                
                false
            
            
                src/main/resources
                
                    **/*.properties
                    **/*.xml
                
                false
            
        
    

✨项目结构(初始化)

新建软件包与XML

【后端】SSM(Spring + SpringMVC + Mybatis)框架整合(一)

  • com.example.pojo

  • com.example.dao

  • com.example.service

  • com.example.controller

  • mybatis-config.xml

    
    
    
    
    
    
  • applicationContext.xml

    
    
    
    
    

✨Mybatis

database.properties

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

Mybatis核心配置文件








    
        
    

    
        
    


实体类

package com.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
    private int bookId;
    private String bookName;
    private int bookCounts;
    private String bookDetail;
}

Mapper接口

package com.example.dao;

import com.example.pojo.Books;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface BookMapper {
    int insertBook(Books books);

    int deleteBookById(@Param("bookId") int bookId);

    int updateBook(Books books);

    Books getBookById(@Param("bookId") int bookId);

    @Select("select * from ssm_build.books")
    List listBooks();
}

Mapper.xml




    
        insert into ssm_build.books(book_id, book_name, book_counts, book_detail)
        VALUES (#{bookId}, #{bookName}, #{bookCounts}, #{bookDetail})
    
    
    
        delete from ssm_build.books where book_id = #{bookId}
    

    
        update ssm_build.books
        set book_name = #{bookName}, book_counts = #{bookCounts}, book_detail = #{bookDetail}
        where book_id = #{bookId}
    
    
    


Service层

接口

package com.example.service;

import com.example.pojo.Books;

import java.util.List;

public interface BookService {
    int insertBook(Books books);

    int deleteBookById(int bookId);

    int updateBook(Books books);

    Books getBookById(int bookId);

    List listBooks();
}

实现类

package com.example.service;

import com.example.dao.BookMapper;
import com.example.pojo.Books;

import java.util.List;

public class BookServiceImpl implements BookService{

//    service层 调 dao层

    private BookMapper bookMapper;

    public void setBookMapper(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

    @Override
    public int insertBook(Books books) {
        return bookMapper.insertBook(books);
    }

    @Override
    public int deleteBookById(int bookId) {
        return bookMapper.deleteBookById(bookId);
    }

    @Override
    public int updateBook(Books books) {
        return bookMapper.updateBook(books);
    }

    @Override
    public Books getBookById(int bookId) {
        return bookMapper.getBookById(bookId);
    }

    @Override
    public List listBooks() {
        return bookMapper.listBooks();
    }
}

✨Spring

resources 下新建

  • spring-dao.xml

  • spring-service.xml


Spring整合Mybatis

spring-dao.xml



    



    


    
    
        
        
        
        
        

        
        
        
        
        
        
        
        
        
    


    
        
        
        
        
    


    
        
        
        
        
    


Spring整合service层

spring-service.xml





    


    
        
    


    
        
        
    




✨SpringMVC

resources 下新建 spring-mvc.xml


添加Web框架支持

在项目根目录右键 -> 添加框架支持

**并在 WEB-INF 下新建目录 jsp **

【后端】SSM(Spring + SpringMVC + Mybatis)框架整合(一)

web.xml





    
        DispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            
            classpath:applicationContext.xml
        
        1
    
    
        DispatcherServlet
        /
    


    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
    
    
        encodingFilter
        /*
    

    
    
        15
    


spring-mvc.xml







    

    


    
        
        
        
    


    


✨配置文件整合

applicationContext.xml 中导入各层配置文件




    
    
    
    

✨项目结构(SSM整合)

【后端】SSM(Spring + SpringMVC + Mybatis)框架整合(一)


✨参考及引用

SSM(SSM 框架集)_百度百科 (baidu.com)

【狂神说Java】SSM框架最新整合教学IDEA版_哔哩哔哩_bilibili

狂神说SpringMVC05:整合SSM框架 (qq.com)


⭐转载请注明出处

本文作者:双份浓缩馥芮白

原文链接:https://www.cnblogs.com/Flat-White/p/15200766.html

版权所有,如需转载请注明出处。


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
author-avatar
玛丽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有