前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSM整合

SSM整合

作者头像
张小驰出没
发布2021-04-15 17:31:37
4990
发布2021-04-15 17:31:37
举报

SSM整合

环境要求

环境:

  • IDEA
  • MySQL 5.1.47
  • Tomcat 9
  • Maven 3.6

这个SSM整合文章,以图书的增删改查为例

本文章源代码已上传: Github:https://github.com/MoYu-zc/SSM_template Gitee:https://gitee.com/MoYu-zc/ssm-integration-template

搭建数据库

创建一个存放书籍数据的数据库表ssmbuild

代码语言:javascript
复制
CREATE DATABASE `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,'这是一个JAVA'),
(2,'MySQL',10,'我是Mysql'),
(3,'SSM',5,'SSM整合啦');
1
1
2
2

基本环境搭建

1、新建一Maven项目 , 添加web的支持

2、导入相关的pom依赖

代码语言:javascript
复制
<dependencies>
   
   <dependency>
       <groupId>junitgroupId>
       <artifactId>junitartifactId>
       <version>4.12version>
   dependency>
   
   <dependency>
       <groupId>mysqlgroupId>
       <artifactId>mysql-connector-javaartifactId>
       <version>5.1.47version>
   dependency>
   
   <dependency>
       <groupId>com.mchangegroupId>
       <artifactId>c3p0artifactId>
       <version>0.9.5.2version>
   dependency>

   
   <dependency>
       <groupId>javax.servletgroupId>
       <artifactId>servlet-apiartifactId>
       <version>2.5version>
   dependency>
   <dependency>
       <groupId>javax.servlet.jspgroupId>
       <artifactId>jsp-apiartifactId>
       <version>2.2version>
   dependency>
   <dependency>
       <groupId>javax.servletgroupId>
       <artifactId>jstlartifactId>
       <version>1.2version>
   dependency>

   
   <dependency>
       <groupId>org.mybatisgroupId>
       <artifactId>mybatisartifactId>
       <version>3.5.2version>
   dependency>
   <dependency>
       <groupId>org.mybatisgroupId>
       <artifactId>mybatis-springartifactId>
       <version>2.0.2version>
   dependency>

   
   <dependency>
       <groupId>org.springframeworkgroupId>
       <artifactId>spring-webmvcartifactId>
       <version>5.1.9.RELEASEversion>
   dependency>
   <dependency>
       <groupId>org.springframeworkgroupId>
       <artifactId>spring-jdbcartifactId>
       <version>5.1.9.RELEASEversion>
   dependency>
dependencies>

3、Maven资源过滤设置

代码语言:javascript
复制
<build>
   <resources>
       <resource>
           <directory>src/main/javadirectory>
           <includes>
               <include>**/*.propertiesinclude>
               <include>**/*.xmlinclude>
           includes>
           <filtering>falsefiltering>
       resource>
       <resource>
           <directory>src/main/resourcesdirectory>
           <includes>
               <include>**/*.propertiesinclude>
               <include>**/*.xmlinclude>
           includes>
           <filtering>falsefiltering>
       resource>
   resources>
build>

4、建立基本结构和配置框架

  • com.pojo
  • com.Dao
  • com.Service
  • com.Controller
  • mybatis-config.xml
代码语言:javascript
复制
<configuration>
    
configuration>
  • applicationContext.xml
代码语言:javascript
复制
<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>

Mybatis层编写

1、数据库配置文件

数据库配置文件 database.properties

代码语言:javascript
复制
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

2、关联数据库

IDEA关联数据库,用idea登陆上自己的数据库

3、编写MyBatis的核心配置文件

代码语言:javascript
复制
<configuration>

    <typeAliases>
        <package name="com.pojo"/>
    typeAliases>
    <mappers>
        <mapper resource="com/Dao/BookMapper.xml"/>
    mappers>
    
configuration>

4、实体类

​ 编写数据库对应的实体类 Books(两种方法

一、使用lombok插件,记得导入Lombok依赖,idea要下载lombok插件

代码语言:javascript
复制
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
   private int bookID;
   private String bookName;
   private int bookCounts;
   private String detail;
}

二、手动添加方法

代码语言:javascript
复制
public class Books {
    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;
    public int getBookID() {
        return bookID;
    }
    public void setBookID(int bookID) {
        this.bookID = bookID;
    }
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public int getBookCounts() {
        return bookCounts;
    }
    public void setBookCounts(int bookCounts) {
        this.bookCounts = bookCounts;
    }
    public String getDetail() {
        return detail;
    }
    public void setDetail(String detail) {
        this.detail = detail;
    }
    public Books() {
    }
    @Override
    public String toString() {
        return "Books{" +
                "bookID=" + bookID +
                ", bookName='" + bookName + '\'' +
                ", bookCounts=" + bookCounts +
                ", detail='" + detail + '\'' +
                '}';
    }
    public Books(int bookID, String bookName, int bookCounts, String detail) {
        this.bookID = bookID;
        this.bookName = bookName;
        this.bookCounts = bookCounts;
        this.detail = detail;
    }
}

5、编写Dao层的 Mapper接口

代码语言:javascript
复制
public interface BookMapper {
    //增加一个Book
    int addBook(Books book);

    //根据id删除一个Book
    int deleteBookById(int id);

    //更新Book
    int updateBook(Books books);

    //根据id查询,返回一个Book
    Books queryBookById(int id);
    
    //查询全部Book,返回list集合
    List<Books> queryAllBook();
}

6、编写对应的 Mapper.xml 文件

编写接口对应的 Mapper.xml 文件,需要导入MyBatis的包

代码语言:javascript
复制
<mapper namespace="com.Dao.BookMapper">

    
    <insert id="addBook" parameterType="Books">
      insert into ssmbuild.books(bookName,bookCounts,detail)
      values (#{bookName}, #{bookCounts}, #{detail})
   insert>

    
    <delete id="deleteBookById" parameterType="int">
      delete from ssmbuild.books where bookID=#{bookID}
   delete>

    
    <update id="updateBook" parameterType="Books">
      update ssmbuild.books
      set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail}
      where bookID = #{bookID}
   update>

    
    <select id="queryBookById" resultType="Books">
      select * from ssmbuild.books
      where bookID = #{bookID}
   select>

    
    <select id="queryAllBook" resultType="Books">
      select * from ssmbuild.books
   select>

mapper>

7、编写Service层

接口:

代码语言:javascript
复制
public interface BookService {
    //增加一个Book
    int addBook(Books book);
    //根据id删除一个Book
    int deleteBookById(int id);
    //更新Book
    int updateBook(Books books);
    //根据id查询,返回一个Book
    Books queryBookById(int id);
    //查询全部Book,返回list集合
    List<Books> queryAllBook();
}

实现类:

代码语言:javascript
复制
public class BookServiceImpl implements BookService{
    
    private BookMapper bookMapper;
    
    public void setBookMapper(BookMapper bookMapper) {
       this.bookMapper = bookMapper;
    }
    public int addBook(Books book) {
        return bookMapper.addBook(book);
    }
    public int deleteBookById(int id) {
        return bookMapper.deleteBookById(id);
    }
    public int updateBook(Books books) {
        return bookMapper.updateBook(books);
    }
    public Books queryBookById(int id) {
        return bookMapper.queryBookById(id);
    }
    public List<Books> queryAllBook() {
        return bookMapper.queryAllBook();
    }
}

到此,底层需求操作编写完毕

Spring层

1、配置Spring整合MyBatis,我们这里数据源使用c3p0连接池;

2、我们去编写Spring整合Mybatis的相关的配置文件;spring-dao.xml

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

	
	
	<context:property-placeholder location="classpath:database.properties"/>

	
	
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		
		<property name="driverClass" value="${jdbc.driver}"/>
		<property name="jdbcUrl" value="${jdbc.url}"/>
		<property name="user" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>

		
		<property name="maxPoolSize" value="30"/>
		<property name="minPoolSize" value="10"/>
		
		<property name="autoCommitOnClose" value="false"/>
		
		<property name="checkoutTimeout" value="10000"/>
		
		<property name="acquireRetryAttempts" value="2"/>
	bean>

	
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		
		<property name="dataSource" ref="dataSource"/>
		
		<property name="configLocation" value="classpath:mybatis-config.xml"/>
	bean>

	
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
		
		<property name="basePackage" value="com.Dao"/>
	bean>
	
beans>

3、**Spring整合service层;**spring-service.xml

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    
    <context:component-scan base-package="com.Service" />

    
    <bean id="BookServiceImpl" class="com.Service.BookServiceImpl">
        <property name="bookMapper" ref="bookMapper"/>
    bean>

    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        
        <property name="dataSource" ref="dataSource" />
    bean>

beans>

如果这个文件出错,是因为Spring的几个配置文件没有整合在一起,有两个方法:

一、手动关联

File—Project Structure中:

3
3

如果三个不在同一个里面,点 “+” 添加文件。

二、语句引用

在配置文件applicationContext.xml中加入引用语句:

代码语言:javascript
复制
<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">

    <import resource="classpath:spring-service.xml"/>
	<import resource="classpath:spring-dao.xml"/>

beans>

这样这三个xml文件就关联起来了。

SpringMVC层

1、web.xml

代码语言:javascript
复制
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    
    <servlet>
        <servlet-name>DispatcherServletservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            
            <param-value>classpath:applicationContext.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>

    
    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        filter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>utf-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    
    <session-config>
        <session-timeout>15session-timeout>
    session-config>
    
web-app>

2、springmvc.xml

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/mvc
   https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    
    <mvc:annotation-driven />
    
    <mvc:default-servlet-handler/>

    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
    bean>

    
    <context:component-scan base-package="com.Controller" />

beans>

3、applicationContext.xml

代码语言:javascript
复制
<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">

   <import resource="spring-dao.xml"/>
   <import resource="spring-service.xml"/>
   <import resource="spring-mvc.xml"/>
   
beans>

4.BookController类

代码语言:javascript
复制
@Controller
public class BookController {

        @Autowired
        @Qualifier("BookServiceImpl")
        private BookService bookService;

//     方法一:查询全部书籍
        @RequestMapping("/allBook")
        public String list(Model model) {
            List<Books> list = bookService.queryAllBook();
            model.addAttribute("list", list);
            return "allBook";
        }

//    方法二:添加书籍
    @RequestMapping("/toAddBook")
    public String toAddPaper() {
        return "addBook";
    }
    @RequestMapping("/addBook")
    public String addPaper(Books books) {
        System.out.println(books);
        bookService.addBook(books);
        return "redirect:/allBook";
    }

//    方法三:修改书籍
    @RequestMapping("/toUpdateBook")
    public String toUpdateBook(Model model, int id) {
        Books books = bookService.queryBookById(id);
        System.out.println(books);
        model.addAttribute("book",books );
        return "updateBook";
    }
    @RequestMapping("/updateBook")
    public String updateBook(Model model, Books book) {
        System.out.println(book);
        bookService.updateBook(book);
        Books books = bookService.queryBookById(book.getBookID());
        model.addAttribute("books", books);
        return "redirect:/allBook";
    }

//    方法四:删除书籍
    @RequestMapping("/del/{bookId}")
    public String deleteBook(@PathVariable("bookId") int id) {
        bookService.deleteBookById(id);
        return "redirect:/allBook";
    }
}

5.编写jsp文件

首页 index.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>



  首页
  
    a {
      text-decoration: none;
      color: black;
      font-size: 18px;
    }
    h3 {
      width: 180px;
      height: 38px;
      margin: 100px auto;
      text-align: center;
      line-height: 38px;
      background: deepskyblue;
      border-radius: 4px;
    }
  



  点击进入列表页

书籍列表页面 allbook.jsp

代码语言:javascript
复制
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    书籍列表
    
    
    





    
        
            
                
                    书籍列表 —— 显示所有书籍
                
            
        
    

    
        
            新增
        
    

    
        
            
                    
                
                
                    书籍编号
                    书籍名字
                    书籍数量
                    书籍详情
                    操作
                
                

                
                
                        ${book.getBookID()}
                        ${book.getBookName()}
                        ${book.getBookCounts()}
                        ${book.getDetail()}
                        
                            更改 |
                            删除

添加书籍页面:addBook.jsp

代码语言:javascript
复制
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    新增书籍
    
    
    




    
        
            
                
                    新增书籍
                
            
        
    
    
        书籍名称:



        书籍数量:



        书籍详情:

修改书籍页面 updateBook.jsp

代码语言:javascript
复制
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    修改信息
    
    
    




    
        
            
                
                    修改信息
                
            
        
    

    
        
        书籍名称:
        书籍数量:
        书籍详情:

配置Tomcat

4
4

点击上图中红框处


5
5

进入该页面,点击 “+” ,之后点击Tomcat Server 中的Local

注意: 别选择了 TomEE Server


6
6

点击CONFIGURE…,选择你下载的Tomcat所在的文件夹


7
7

按照上述方法操作好,Tomcat就部署完成了

项目架构展示

项目结构图

8
8
9
9

项目页面展示

10
10

11
11

12
12

13
13

本文源代码链接最上方

个人博客为: MoYu’s Github Blog MoYu’s Gitee Blog

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SSM整合
    • 搭建数据库
      • 基本环境搭建
        • Mybatis层编写
          • 1、数据库配置文件
          • 2、关联数据库
          • 3、编写MyBatis的核心配置文件
          • 4、实体类
          • 5、编写Dao层的 Mapper接口
          • 6、编写对应的 Mapper.xml 文件
          • 7、编写Service层
        • Spring层
          • SpringMVC层
            • 1、web.xml
            • 2、springmvc.xml
            • 3、applicationContext.xml
            • 4.BookController类
            • 5.编写jsp文件
          • 配置Tomcat
          • 项目架构展示
            • 项目结构图
            • 项目页面展示
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档