SSM(Spring,SpringMVC,Mybatis)框架整合项目(springmvc+mybatis框架介绍)

  本篇文章为你整理了SSM(Spring,SpringMVC,Mybatis)框架整合项目(springmvc+mybatis框架介绍)的详细内容,包含有ssm框架整合时,spring配置文件中的配置信息 springmvc+mybatis框架介绍 ssm框架中spring作用 ssm框架与springboot开发 SSM(Spring,SpringMVC,Mybatis)框架整合项目,希望能帮助你了解 SSM(Spring,SpringMVC,Mybatis)框架整合项目。

  `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`)

  INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES

  (1,Java,1,从入门到放弃),

  (2,MySQL,10,从删库到跑路),

  (3,Linux,5,从进门到进牢);

  

 

 

  基本环境搭建:
 

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

  2、导入相关的pom依赖!

  

 !--依赖:junit,数据库驱动,连接池,servlet,jsp,mybatis,mybatis-spring,spring,-- 

 

   dependencies

   !--Junit--

   dependency

   groupId junit /groupId

   artifactId junit /artifactId

   version 4.12 /version

   /dependency

   !--数据库驱动--

   dependency

   groupId mysql /groupId

   artifactId mysql-connector-java /artifactId

   version 8.0.25 /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.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

   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

   dependency

   groupId org.projectlombok /groupId

   artifactId lombok /artifactId

   version 1.18.2 /version

   scope compile /scope

   /dependency

   /dependencies

  

 

  3、Maven资源过滤设置

  

 !--静态资源导出问题-- 

 

   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

  

 

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

  com.bai.pojo

  com.bai.dao

  com.bai.service

  com.bai.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

   /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"

   /beans

  

 

  Mybatis层编写

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

  

jdbc.driver=com.mysql.cj.jdbc.Driver

 

  jdbc.url=jdbc:mysql://localhost:3306/ssmbooks?useUnicode=true characterEncoding=utf8

  jdbc.username=root

  jdbc.password=root

  

 

  2、IDEA关联数据库
 

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

  

 !-- 配置数据源 交给spring去做-- 

 

   !-- 别名--

   typeAliases

   package name="com.bai.pojo"/

   /typeAliases

   !-- 注册BookMapper.xml--

   mappers

   mapper /mapper

   /mappers

  

 

  4、编写数据库对应的实体类 com.bai.pojo.Books
 

  使用lombok插件!

  

package com.bai.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 detail;

  

 

  5、编写Dao层的 Mapper接口!

  

package com.bai.dao;

 

  import com.bai.pojo.Books;

  import org.apache.ibatis.annotations.Param;

  import java.util.List;

  public interface BookMapper {

   // 添加一本书

   int addBook(Books books);

   // 删除一本书

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

   // 更新一本书

   int updateBook(Books books);

   // 查询一本书

   Books queryBookById(@Param("bookId") int id);

   // 查询全部的书

   List Books queryAllBook();

   // 通过名字查询书籍

   List Books queryBookByName(@Param("BookName") String BookName);

  

 

  6、编写接口对应的 Mapper.xml 文件。需要导入MyBatis的包;

  

 ?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.bai.dao.BookMapper"

   !-- 添加一本书--

   insert id="addBook" parameterType="com.bai.pojo.Books"

   insert into ssmbooks.books ( bookName, bookCounts, detail)

   values (#{bookName},#{bookCounts},#{detail})

   /insert

   !-- 删除一本书--

   delete id="deleteBookById" parameterType="int"

   delete from ssmbooks.books where bookID = #{bookId}

   /delete

   !-- 更新一本书--

   update id="updateBook" parameterType="com.bai.pojo.Books"

   update ssmbooks.books set bookName=#{bookName},bookCounts=#{bookCounts},detail=#{detail}

   where bookID=#{bookID}

   /update

   !-- 通过id查询书籍--

   select id="queryBookById" resultType="com.bai.pojo.Books"

   select * from ssmbooks.books where bookID=#{bookId}

   /select

   !-- 查询全部的书--

   select id="queryAllBook" resultType="com.bai.pojo.Books"

   select * from ssmbooks.books

   /select

   !-- 通过名字查询书籍--

   select id="queryBookByName" resultType="com.bai.pojo.Books"

   select * from ssmbooks.books where bookName like concat(%,#{BookName},%)

   /select

   /mapper

  

 

  7、编写Service层的接口和实现类
 

  接口:

  

package com.bai.service;

 

  import com.bai.pojo.Books;

  import java.util.List;

  public interface BookService {

   // 添加一本书

   int addBook(Books books);

   // 删除一本书

   int deleteBookById(int id);

   // 更新一本书

   int updateBook(Books books);

   // 查询一本书通过id

   Books queryBookById(int id);

   // 查询全部的书

   List Books queryAllBook();

   // 查询一本书通过名字

   List Books queryBookByName(String BookName);

  

 

  实现类:

  

package com.bai.service;

 

  import com.bai.dao.BookMapper;

  import com.bai.pojo.Books;

  import org.springframework.beans.factory.annotation.Autowired;

  import org.springframework.beans.factory.annotation.Value;

  import org.springframework.stereotype.Service;

  import java.util.List;

  @Service("BookServiceImpl")

  public class BookServiceImpl implements BookService{

   //service层调dao层: 组合dao

   @Autowired

   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 List Books queryBookByName(String BookName) {

   return bookMapper.queryBookByName(BookName);

  

 

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

  Spring层

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

  2、我们去编写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"

   !-- 配置整合mybatis --

   !-- 1.关联数据库配置文件--

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

   !-- 2.数据库连接池 dbcp: 半自动化操作,不能自动连接 c3p0:自动化操作(自动化的加载配置文件,并且可以自动设置到对象中!)--

   bean id="dataSource"

   !-- 配置连接池属性 --

   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.sqlSessionFactory--

   bean id="sqlSessionFactory"

   property name="dataSource" ref="dataSource"/

   !-- 绑定mybatis的配置文件--

   property name="configLocation" value="classpath:mybatis-config.xml"/

   /bean

   !-- 配置dao接口扫描包,动态的实现了dao接口可以注入到Spring容器中--

   bean

   !-- 1.注入 sqlSessionFactory--

   !-- 继承就使用: sqlSessionFactoryBeanName 私有化就使用:sqlSessionTemplateBeanName--

   property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/

   !-- 2.扫描dao包--

   property name="basePackage" value="com.bai.dao"/

   /bean

   /beans

  

 

  3、Spring整合service层

  

 ?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.bai.service"/

   !-- 2.将我们所有的业务类,注入到spring中,可以通过配置,或注解实现自动装配--

   !-- bean id="BookServiceImpl" --

   !-- property name="bookMapper" ref="bookMapper"/ --

   !-- /bean --

   !-- 3.声明式事务配置--

   bean id="TransactionManager"

   !-- 注入数据源--

   property name="dataSource" ref="dataSource"/

   /bean

   !-- 4.aop事务支持--

  


 ?xml version="1.0" encoding="UTF-8"? 

 

   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"

   !--DispatcherServlet--

   servlet

   servlet-name DispatcherServlet /servlet-name

   servlet-class org.springframework.web.servlet.DispatcherServlet /servlet-class

   init-param

   param-name contextConfigLocation /param-name

   !--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!--

   param-value classpath:applicationContext.xml /param-value

   /init-param

   load-on-startup 1 /load-on-startup

   /servlet

   servlet-mapping

   servlet-name DispatcherServlet /servlet-name

   url-pattern / /url-pattern

   /servlet-mapping

   !--乱码配置:过滤器--

   filter

   filter-name encodingFilter /filter-name

   filter-class

   org.springframework.web.filter.CharacterEncodingFilter

   /filter-class

   init-param

   param-name encoding /param-name

   param-value utf-8 /param-value

   /init-param

   /filter

   filter-mapping

   filter-name encodingFilter /filter-name

   url-pattern /* /url-pattern

   /filter-mapping

   !--Session过期时间--

   session-config

   session-timeout 15 /session-timeout

   /session-config

   /web-app

  

 

  2、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

   https://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.bai.controller"/

   !-- 4.配置jsp 显示ViewResolver视图解析器--

   bean

   property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /

   property name="prefix" value="/WEB-INF/jsp/" /

   property name="suffix" value=".jsp" /

   /bean

   /beans

  

 

  3、Spring配置整合文件,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

  

 

  Controller 和 视图层编写
 

  **1、BookController 类编写 **

  

package com.bai.controller;

 

  
import com.bai.service.BookService;

  import org.springframework.beans.factory.annotation.Autowired;

  import org.springframework.beans.factory.annotation.Qualifier;

  import org.springframework.stereotype.Controller;

  import org.springframework.ui.Model;

  import org.springframework.web.bind.annotation.PathVariable;

  import org.springframework.web.bind.annotation.RequestMapping;

  import java.util.List;

  @Controller

  @RequestMapping("/book")

  public class BookController {

   //controller层调service层

   @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 addBook(Books books){

   System.out.println("Books= :"+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,Model model) {

   System.out.println("UpdateBook= :"+books);

   bookService.updateBook(books);

  // 出现的问题:我们提交了修改的SQL请求,但是修改失败。

  // 我们看一下sql语句,能否执行成功? 执行失败:发现sql语句需要传递一个id进行修改

  // Books books1 = bookService.queryBookById(books.getBookID());

  // model.addAttribute("books1", books1);

   return "redirect:/book/allbook";

   //删除书籍请求

   @RequestMapping("/del/{bookid}")

   public String DeleteBook(@PathVariable("bookid") int id) {

   bookService.deleteBookById(id);

   return "redirect:/book/allbook";

   //通过名字查询书籍请求

   @RequestMapping("/queryBook")

   public String queryBook(String queryBookName,Model model) {

   List Books list = bookService.queryBookByName(queryBookName);

   model.addAttribute("list", list);

   if (list.size()==0){

   model.addAttribute("msg", "未查到数据");

   return "allbook";

  

 

  2、编写首页 index.jsp

  

 %@ page contentType="text/html;charset=UTF-8" language="java" % 

 

   html

   head

   title 首页 /title

   /head

   style type="text/css"

   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;

   /style

   body

   a href="${pageContext.request.contextPath}/book/allbook" 进入书籍页面 /a

   /h3

   /body

   /html

  

 

  3、书籍列表页面 allbook.jsp

  

 %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" % 

 

   %@ page contentType="text/html;charset=UTF-8" language="java" %

   html

   head

   title 书籍列表 /title

   meta name="viewport" content="width=device-width, initial-scale=1.0"

   !-- 引入 Bootstrap --

   link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"

   /head

   body

   div

   div

   div

   div

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

   /h1

   /div

   /div

   /div

   div

   div

   a href="${pageContext.request.contextPath}/book/toAddBook" 新增书籍 /a

   a href="${pageContext.request.contextPath}/book/allbook" 显示全部书籍 /a

   /div

   div

   form action="${pageContext.request.contextPath}/book/queryBook" method="post"

   span ${msg} /span

   input type="text" name="queryBookName" placeholder="请输入要查询的书籍"

   input type="submit" value="查询"

   /form

   /div

   /div

   div

   div

   table

   thead

   th 书籍编号 /th

   th 书籍名字 /th

   th 书籍数量 /th

   th 书籍详情 /th

   th 操作 /th

   /tr

   /thead

   tbody

   c:forEach var="book" items="${requestScope.get(list)}"

   td ${book.getBookID()} /td

   td ${book.getBookName()} /td

   td ${book.getBookCounts()} /td

   td ${book.getDetail()} /td

   a href="${pageContext.request.contextPath}/book/toUpdate?id=${book.getBookID()}" 更改 /a %-- //老式的传参--%

   a href="${pageContext.request.contextPath}/book/del/${book.getBookID()}" 删除 /a %-- //Restful风格传参--%

   /td

   /tr

   /c:forEach

   /tbody

   /table

   /div

   /div

   /div

   /body

   /html

  

 

  5、添加书籍页面:addBook.jsp

  

 %@ page contentType="text/html;charset=UTF-8" language="java" % 

 

   html

   head

   title 新增书籍 /title

   meta name="viewport" content="width=device-width, initial-scale=1.0"

   !-- 引入 Bootstrap --

   link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"

   /head

   body

   div

   div

   div

   div

   small 新增书籍 /small

   /h1

   /div

   /div

   /div

   form action="${pageContext.request.contextPath}/book/addBook" method="post"

   书籍名称: input type="text" name="bookName" br br br

   书籍数量: input type="text" name="bookCounts" br br br

   书籍详情: input type="text" name="detail" br br br

   input type="submit" value="添加"

   /form

   /div

   /body

   /html

  

 

  7、修改书籍页面 updateBook.jsp

  

 %@ page contentType="text/html;charset=UTF-8" language="java" % 

 

   html

   head

   title 修改信息 /title

   meta name="viewport" content="width=device-width, initial-scale=1.0"

   !-- 引入 Bootstrap --

   link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"

   /head

   body

   div

   div

   div

   div

   small 修改信息 /small

   /h1

   /div

   /div

   /div

   form action="${pageContext.request.contextPath}/book/updateBook" method="post"

   %--出现的问题:我们提交了修改的SQL请求,但是修改失败。

   我们看一下sql语句,能否执行成功? 执行失败:发现sql语句需要传递一个id进行修改--%

   %-- 前端传参隐藏域--%

   input type="hidden" name="bookID" value="${QBook.getBookID()}"/

   书籍名称: input type="text" name="bookName" value="${QBook.getBookName()}"/

   书籍数量: input type="text" name="bookCounts" value="${QBook.getBookCounts()}"/

   书籍详情: input type="text" name="detail" value="${QBook.getDetail() }"/

   input type="submit" value="提交"/

   /form

   /div

   /body

   /html

  

 

  配置Tomcat,进行运行!

  
 

  这里我们只是使用了SSM框架完成了基本的增删改查功能模块的网页

  以上就是SSM(Spring,SpringMVC,Mybatis)框架整合项目(springmvc+mybatis框架介绍)的详细内容,想要了解更多 SSM(Spring,SpringMVC,Mybatis)框架整合项目的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: