SSM 整合

SSM 整合

1、环境要求

  • IDEA

  • MySQL 8.0.21

  • Tomcat 9

  • Maven 3.6.1

2、基本环境搭建

2.1、创建一个 Maven 项目,添加 web 支持

2.2、pom 文件中导入相关依赖

<?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>com.normal</groupId>
   <artifactId>ssmbuild</artifactId>
   <version>1.0-SNAPSHOT</version>

  <dependencies>

      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.24</version>
      </dependency>

      <!--junit,数据库驱动,连接池,servlet,jsp,mybatis,mybatis-spring,spring-->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
      </dependency>

      <!--数据库驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.21</version>
      </dependency>
      <!-- 数据库连接池 -->
      <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.1</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.9</version>
      </dependency>
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>2.0.7</version>
      </dependency>
      <!--Spring-->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.3.20</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>5.3.20</version>
      </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>

</project>

 

2.3、建立基本框架和配置架构

  • pojo

  • dao

  • service

  • controller

  • 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>

       <!--配置数据源:交给Spring去做-->

       <settings>
           <setting name="logImpl" value="STDOUT_LOGGING"/>
       </settings>

       <typeAliases>
           <package name="com.wuli.pojo"/>
       </typeAliases>

       <mappers>
           <mapper class="com.wuli.dao.BookMapper"/>
       </mappers>

    </configuration>

 

  • applicationContext.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">

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

    </beans>

     

2.4、Mybatis 层编写

  1. 数据库配置文件 database.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=1234
  2. 编写 dao 层接口

    //增加一本书
    int addBook(Books books);

    //删除一本书
    int deleteBookById(@Param("bookId") int id);

    //更新一本书
    int updateBook(Books books);

    //查询一本书
    Books queryBookById(@Param("bookId") int id);

    //查询全部的书
    List<Books> queryAllBook();

    Books queryBookByName(@Param("bookName") String bookName);
  3. 编写对应的 Mapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
           PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
           "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.wuli.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>

       <select id="queryBookByName" resultType="Books">
          select * from ssmbuild.books where bookName = #{bookName}
       </select>

    </mapper>
  4. 编写 service 层接口

    //增加一本书
    int addBook(Books books);

    //删除一本书
    int deleteBookById(int id);

    //更新一本书
    int updateBook(Books books);

    //查询一本书
    Books queryBookById(int id);

    //查询全部的书
    List<Books> queryAllBook();

    Books queryBookByName(String bookName);
  5. 编写 service 层实现类

    //service调用dao层
    private BookMapper bookMapper;

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

    public int addBook(Books books) {
       return bookMapper.addBook(books);
    }

    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();
    }

    public Books queryBookByName(String bookName) {
       return bookMapper.queryBookByName(bookName);
    }

 

2.5、编写 Spring 层

  1. 编写Spring整合Mybatis的相关的配置文件; spring-dao.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"
          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">

       <!--1、关联数据库配置文件-->
       <context:property-placeholder location="classpath:database.properties"/>

       <!--2、连接池-->
       <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}"/>

           <!-- c3p0连接池的私有属性 -->
           <property name="maxPoolSize" value="30"/>
           <property name="minPoolSize" value="10"/>
           <!-- 关闭连接后不自动commit -->
           <property name="autoCommitOnClose" value="false"/>
           <!-- 获取连接超时时间 -->
           <property name="checkoutTimeout" value="10000"/>
           <!-- 当获取连接失败重试次数 -->
           <property name="acquireRetryAttempts" value="2"/>
       </bean>

       <!--3、salSessionFactory-->
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
           <property name="dataSource" ref="dataSource"/>
           <!--绑定Mybatis的配置文件-->
           <property name="configLocation" value="classpath:mybatis-config.xml"/>
       </bean>

       <!--4、配置dao接口扫描包,动态的是吸纳了Dao接口可以注入到Spring容器中-->
       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
           <!--注入sqlSessionFactory-->
           <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
           <!--扫描dao包-->
           <property name="basePackage" value="com.wuli.dao"/>
       </bean>
    </beans>
  2. Spring 整合 Service,编写 spring-service.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"
          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">

       <!--1、扫描service下的包-->
       <context:component-scan base-package="com.wuli.service"/>

       <!--2、将我们的所以业务类,注入到Spring,可以通过配置或者注解实现-->
       <bean id="BooksServiceImpl" class="com.wuli.service.BooksServiceImpl">
           <property name="bookMapper" ref="bookMapper"/>
       </bean>

       <!--3、声明式事务配置-->
       <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
           <property name="dataSource" ref="dataSource"/>
       </bean>
    </beans>

 

2.6、编写 SpringMVC 层

  1. 编写 spring-mvc.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"
          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">
       <!--1、注解驱动-->
       <mvc:annotation-driven/>

       <!--2、静态资源过滤-->
       <mvc:default-servlet-handler/>

       <!--3、扫描包:controller-->
       <context:component-scan base-package="com.wuli.controller"/>

       <!--4、视图解析器-->
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
           <property name="prefix" value="/WEB-INF/jsp/"/>
           <property name="suffix" value=".jsp"/>
       </bean>
    </beans>

     

3、Controller 层编写

@Controller
@RequestMapping("/book")
public class BookController {

   //controller 调用 service层
   @Autowired
   @Qualifier("BooksServiceImpl")
   private BookService bookService;

   //查询全部书籍,返回一个书籍展示界面
   @RequestMapping("/allBook")
   public String list(Model model){
       List<Books> books = bookService.queryAllBook();

       model.addAttribute("list",books);
       return "allBook";
  }

   //跳转到增加书籍页面
   @RequestMapping("/toAddBook")
   public String toAddPaper(){
       return "addBook";
  }

   //添加书籍的请求
   @RequestMapping("/addBook")
   public String addBook(Books books){
       System.out.println("addBook=>"+books);
       bookService.addBook(books);
       return "redirect:/book/allBook";
  }

   //跳转到修改页面
   @RequestMapping("/toUpdate")
   public String toUpdatePaper(int id,Model model){
       Books books = bookService.queryBookById(id);
       model.addAttribute("QBook",books);
       return "updateBook";
  }

   //修改书籍
   @RequestMapping("/updateBook")
   public String updateBook(Books books){
       System.out.println("updateBook=>"+books);
       bookService.updateBook(books);
       return "redirect:/book/allBook";
  }

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

   //查询书籍
   @RequestMapping("/queryBook")
   public String queryBook(String queryBookName,Model model){
       Books books = bookService.queryBookByName(queryBookName);
       List<Books> list = new ArrayList<Books>();
       list.add(books);

       if (books == null){
           list = bookService.queryAllBook();
           model.addAttribute("error","未查到");
      }

       model.addAttribute("list",list);
       return "allBook";
  }

}
 
posted @   泡面喝完还有汤  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示