日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SSM框架终极篇——Spring、SpringMVC、MyBatis整合练习(超级详细)

發(fā)布時間:2023/12/8 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSM框架终极篇——Spring、SpringMVC、MyBatis整合练习(超级详细) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

SSM框架終極篇——Spring、SpringMVC、MyBatis整合練習(xí)

一、準(zhǔn)備工作

環(huán)境:

  • 新版IDEA
  • MySQL 5.7
  • Tomcat 9.0.2
  • Maven

要求:

  • 熟練掌握MySQL數(shù)據(jù)庫
  • 掌握Spring、SpringMVC、MyBatis框架知識
  • 了解簡單的前端知識(JSP、BootStarp)

二、項目編寫

1.創(chuàng)建數(shù)據(jù)庫

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 '數(shù)量',`detail` VARCHAR(200) NOT NULL COMMENT '描述',KEY `bookID` (`bookID`) ) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES (1,'Java',1,'從入門到放棄'), (2,'MySQL',10,'從刪庫到跑路'), (3,'Linux',5,'從入門到入獄');

2.新建Maven的web項目并連接數(shù)據(jù)庫


并創(chuàng)建相應(yīng)的目錄結(jié)構(gòu)

連接數(shù)據(jù)庫


3.導(dǎo)入MySQL驅(qū)動包、創(chuàng)建JDBC配置文件

在pom.xml中導(dǎo)入MySQL驅(qū)動依賴包

<!-- 數(shù)據(jù)庫驅(qū)動包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>

在resources目錄下創(chuàng)建database.properties文件,寫入連接數(shù)據(jù)庫的配置信息

jdbc.Driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=123456

4.編寫pojo實體類、編寫dao持久化層

實體類

package com.muhan.pojo;//實體類 public class Book {private int bookID;private String bookName;private int bookCounts;private String detail;public Book() {}public Book(int bookID, String bookName, int bookCounts, String detail) {this.bookID = bookID;this.bookName = bookName;this.bookCounts = bookCounts;this.detail = 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;}@Overridepublic String toString() {return "Book{" +"bookID=" + bookID +", bookName='" + bookName + '\'' +", bookCounts=" + bookCounts +", detail='" + detail + '\'' +'}';} }

dao層接口

package com.muhan.dao;import com.muhan.pojo.Book;import java.util.List;//dao層接口 public interface BookDao {//增加Bookint addBook(Book book);//通過id查詢BookBook queryBookById(int id);//修改Bookint updateBook(Book book);//根據(jù)id刪除Bookint deleteBookById(int id);//查詢所有Book,返回集合List<Book> queryAllBook(); }

導(dǎo)入MyBatis的依賴包

<!-- MyBatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency>

編寫dao層接口對應(yīng)的Mapper文件

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.muhan.dao.BookDao"><!--//1.增加一個book--><insert id="addBook" parameterType="Book">insert into ssmbuild.book(bookID,bookName,bookCounts,detail)values (#{bookID},#{bookName},#{bookCounts},#{detail})</insert><!--//2.通過ID刪除一個book--><delete id="deleteBookById" parameterType="Integer">delete from ssmbuild.book where bookID=#{bookID}</delete><!--//3.更改book--><update id="updateBook" parameterType="Book">update ssmbuild.bookset bookName=#{bookName},bookCounts=#{bookCounts},detail=#{detail}where bookID=#{bookID}</update><!--//4.通過ID查詢book--><select id="queryBookById" resultType="Book">select * from ssmbuild.book where bookID=#{bookID}</select><!--//5.獲取所有的book--><select id="queryAllBook" resultType="Book">select * from ssmbuild.book</select></mapper>

在resources目錄下新建mybatis-config.xml配置文件,配置mybatis

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><!--別名--><typeAliases><package name="com.muhan.pojo"/></typeAliases><!--映射BookDaoMapper.xml文件--><mappers><mapper resource="com/muhan/dao/BookDaoMapper.xml"/></mappers> </configuration>

5.編寫Service層接口、接口實現(xiàn)類

編寫Service接口

package com.muhan.service;import com.muhan.pojo.Book;import java.util.List;//service層接口 public interface BookService {//增加Bookint addBook(Book book);//通過id查詢BookBook queryBookById(Integer id);//修改Bookint updateBook(Book book);//根據(jù)id刪除Bookint deleteBookById(Integer id);//查詢所有Book,返回集合List<Book> queryAllBook(); }

編寫Service接口實現(xiàn)類

package com.muhan.service;import com.muhan.dao.BookDao; import com.muhan.pojo.Book;import java.util.List;//Service層接口實現(xiàn)類,調(diào)用dao層 public class BookServiceImpl implements BookService {//將BookDao組合進(jìn)來private BookDao bookDao;//設(shè)置一個set方法接口,方斌Spring管理public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}//增加Book@Overridepublic int addBook(Book book) {return bookDao.addBook(book);}//通過id查詢Book@Overridepublic Book queryBookById(Integer id) {return bookDao.queryBookById(id);}//修改Book@Overridepublic int updateBook(Book book) {return bookDao.updateBook(book);}//根據(jù)id刪除Book@Overridepublic int deleteBookById(Integer id) {return bookDao.deleteBookById(id);}//查詢所有Book,返回集合@Overridepublic List<Book> queryAllBook() {return bookDao.queryAllBook();} }

6.配置Spring整合MyBtis(dao層)

我們這里使用c3p0連接池,導(dǎo)入依賴包

<!-- 數(shù)據(jù)庫連接池 --><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency>

再導(dǎo)入mybatis-spring的依賴包、Spring相關(guān)包(spring-web、spring-jdbc)

<!-- mybatis-spring整合包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><!--Spring相關(guān)包--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.24.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.24.RELEASE</version></dependency>

Spring整合MyBatis,在resources目錄下新建spring目錄,并在該目錄下新建spring-dao.xml文件,用來配置spring整合mybatis

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--配置Spring整合Mybatis--><!--1.掃描包--><context:component-scan base-package="com.muhan.dao"/><!--2.關(guān)聯(lián)數(shù)據(jù)庫文件--><context:property-placeholder location="classpath:database.properties"/><!--3.數(shù)據(jù)庫連接池--><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"/> <!--最大連接數(shù)--><property name="minPoolSize" value="5"/> <!--最小連接數(shù)--><property name="autoCommitOnClose" value="false"/><!-- 關(guān)閉連接后不自動commit --><property name="checkoutTimeout" value="10000"/> <!-- 獲取連接超時時間 --><property name="acquireRetryAttempts" value="2"/><!-- 當(dāng)獲取連接失敗重試次數(shù) --></bean><!--4.配置sqlSessionFactory對象:SqlSessionFactoryBean--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--注入數(shù)據(jù)庫連接池--><property name="dataSource" ref="dataSource"/><!--配置mybatis全局配置文件:mybatis-config.xml--><property name="configLocation" value="classpath:mybatis-config.xml"/></bean><!--5.掃描dao接口包,動態(tài)實現(xiàn)dao接口注入到spring中--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!--注入sqlSessionFactory--><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><!--給出需要掃描的dao接口包--><property name="basePackage" value="com.muhan.dao"/></bean> </beans>

6.配置Spring整合Service層

在resources/spring目錄下新建spring-service.xml配置文件,并編寫整合servcie層的配置

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--掃描servcie相關(guān)的包--><context:component-scan base-package="com.muhan.service"/><!--將service層的接口是實現(xiàn)類注入到Spring的IOC容器中--><bean id="BookServiceImpl" class="com.muhan.service.BookServiceImpl"><property name="bookDao" ref="bookDao"/></bean><!--配置事務(wù)管理--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean></beans>

7.配置SpringMVC

首先導(dǎo)入springmvc的三個包:jsp,jstl,servlet

<!--servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version></dependency><!--jsp--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><!--jstl--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>

配置web.xml,在web.xml中配置DispatcherServlet以及過濾器

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><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:application.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></web-app>

在resources/spring下新建spring-mvc.xml配置文件,用來配置springmvc

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--springmvc配置--><!--1.掃描包--><context:component-scan base-package="com.muhan.controller"/><!--2.靜態(tài)資源過濾(1)加入對靜態(tài)資源的處理:js,gif,png(2)允許使用"/"做整體映射--><mvc:default-servlet-handler/><!--3.配置注解驅(qū)動--><mvc:annotation-driven/><!--4.配置視圖解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><!--配置前綴--><property name="prefix" value="/WEN-INF/jsp/"/><!--配置后綴--><property name="suffix" value=".jsp"/></bean></beans>

8.Spring整合配置文件

在resources目錄下新建一個application.xml文件,將spring目錄下的三個spring配置文件導(dǎo)入

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--整合導(dǎo)入三個spring配置文件--><import resource="spring/spring-dao.xml"/><import resource="spring/spring-service.xml"/><import resource="spring/spring-mvc.xml"/></beans>

9.編寫Controller

package com.muhan.controller;import com.muhan.pojo.Book; import com.muhan.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 UserController {@Autowired@Qualifier("BookServiceImpl")private BookService bookService;@RequestMapping("/allBook")public String list(Model model) {System.out.println("allBook進(jìn)來了---------------------------------");List<Book> list = bookService.queryAllBook();model.addAttribute("list",list);return "allBook";}@RequestMapping("/toAddBook")public String toAddBook() {return "addBook";}@RequestMapping("/addBook")public String addBook(Book book){System.out.println("添加的書:---------------->"+book);bookService.addBook(book);return "redirect:/book/allBook";//重定向到allBook頁面}@RequestMapping("/toUpdateBook")public String toUpdateBook(Model model,Integer id){Book book = bookService.queryBookById(id);System.out.println("展示要修改的書:---------------->"+book);model.addAttribute("book",book);return "updateBook";}@RequestMapping("/updateBook")public String updateBook(Model model,Book book){System.out.println("要修改的書:---------------->"+book);bookService.updateBook(book);Book book1 = bookService.queryBookById(book.getBookID());model.addAttribute("book",book1);System.out.println("修改后的書籍===="+book1);return "redirect:/book/allBook";//重定向到allBook頁面}@RequestMapping("/del/{bookID}")public String deleteBook(@PathVariable("bookID") Integer id){bookService.deleteBookById(id);return "redirect:/book/allBook";//重定向到allBook頁面} }

10.處理資源導(dǎo)出問題

在pom.xml里的build里面配置

<resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes><filtering>false</filtering></resource></resources>

11.前端視圖層

首頁index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>首頁</title><style>body{text-align: center;line-height: 500PX;text-align: center;}div{width: 200px;height: 200px;text-align: center;line-height: 200PX;background: aquamarine;border-radius: 100px;}a{font-size: 25px;color: black;text-decoration: none;}</style> </head> <body><div><a href="${pageContext.request.contextPath}/book/allBook">點擊查看列表</a> </div></body> </html>

在WEB-INF目錄下新建jsp目錄,并將以下的頁面放在該目錄下

增加書籍頁面addBook.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 class="container"><div class="row clearfix"><div class="col-md-12 column"><div class="page-header"><h1><small>新增書籍</small></h1></div></div></div><form action="${pageContext.request.contextPath}/book/addBook" method="post">書籍名稱:<input type="text" name="bookName"><br><br><br>書籍?dāng)?shù)量:<input type="text" name="bookCounts"><br><br><br>書籍詳情:<input type="text" name="detail"><br><br><br><input type="submit" value="添加"></form></div>

書籍列表頁面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 class="container"><div class="row clearfix"><div class="col-md-12 column"><div class="page-header"><h1><small>書籍列表 —— 顯示所有書籍</small></h1></div></div></div><div class="row"><div class="col-md-4 column"><a class="btn btn-primary" href="${pageContext.request.contextPath}/book/toAddBook">新增</a></div></div><div class="row clearfix"><div class="col-md-12 column"><table class="table table-hover table-striped"><thead><tr><th>書籍編號</th><th>書籍名字</th><th>書籍?dāng)?shù)量</th><th>書籍詳情</th><th>操作</th></tr></thead><tbody><c:forEach var="book" items="${requestScope.get('list')}"><tr><td>${book.getBookID()}</td><td>${book.getBookName()}</td><td>${book.getBookCounts()}</td><td>${book.getDetail()}</td><td><a href="${pageContext.request.contextPath}/book/toUpdateBook?id=${book.getBookID()}">更改</a> |<a href="${pageContext.request.contextPath}/book/del/${book.getBookID()}">刪除</a></td></tr></c:forEach></tbody></table></div></div> </div>

修改書籍信息頁面updateBook.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 class="container"><div class="row clearfix"><div class="col-md-12 column"><div class="page-header"><h1><small>修改信息</small></h1></div></div></div><form action="${pageContext.request.contextPath}/book/updateBook" method="post"><input type="hidden" name="bookID" value="${book.getBookID()}"/>書籍名稱:<input type="text" name="bookName" value="${book.getBookName()}"/>書籍?dāng)?shù)量:<input type="text" name="bookCounts" value="${book.getBookCounts()}"/>書籍詳情:<input type="text" name="detail" value="${book.getDetail() }"/><input type="submit" value="提交"/></form></div>

12.配置Tomcat






13.項目結(jié)構(gòu)

14.測試

運行tomcat測試

點擊查看列表

點擊新增按鈕,新增書籍

新增后,自動返回列表頁面,我們發(fā)現(xiàn)新增的數(shù)據(jù)已經(jīng)填加上了

再去數(shù)據(jù)庫查看

我們修改信息,點擊提交后會自動返回列表頁面

發(fā)現(xiàn)數(shù)據(jù)已經(jīng)更改


在數(shù)據(jù)庫中查看,發(fā)現(xiàn)已經(jīng)更新數(shù)據(jù)

然后我們點擊刪除,發(fā)現(xiàn)已經(jīng)刪除

總結(jié)

以上是生活随笔為你收集整理的SSM框架终极篇——Spring、SpringMVC、MyBatis整合练习(超级详细)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。