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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSM配置地狱?一篇整合模板迅速解决!【建议收藏】

發布時間:2023/12/8 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSM配置地狱?一篇整合模板迅速解决!【建议收藏】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring+SpringMVC+Mybatis

環境配置
IDEA
MySQL 5.7
Tomcat 8.5
Maven 3.6
創建數據庫

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=utf8INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES (1,'Java',1,'從入門到放棄'), (2,'MySQL',10,'從刪庫到跑路'), (3,'Linux',5,'從進門到進牢');

編寫數據庫對應的實體類com.longdi.pojo.Books
導入lombok在pom.xml中

package com.longdi.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;/*** @author: 龍弟* @description* @date: 2021/9/27 20:22*/ @Data @AllArgsConstructor @NoArgsConstructor public class Books {private int bookID;private String bookName;private int bookCounts;private String detail; }

導入相關的pom依賴

<dependencies><!--Junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!--數據庫驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</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><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.4</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.16</version><scope>compile</scope></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>

Mybatis層編寫
創建mybatis-config.xml

<?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><settings><setting name="logImpl" value="STDOUT_LOGGING"/></settings><typeAliases><package name="com.longdi.pojo"/></typeAliases><mappers><mapper class="com.longdi.dao.BookMapper"/></mappers> </configuration> 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

編寫Dao層的Mapper接口

package com.longdi.dao;import com.longdi.pojo.Books; import org.apache.ibatis.annotations.Param;import java.util.List;/*** @author: 龍弟* @description* @date: 2021/9/27 20:32*/ 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();Books queryBookByName(@Param("bookName")String bookName);}

編寫接口對應的 Mapper.xml 文件。需要導入MyBatis的包;

<?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.longdi.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.booksset bookName=#{bookName},bookCounts=#{bookCounts},detail=#{detail}where bookID=#{bookID};</update><select id="queryBookById" resultType="Books">select * from ssmbuild.bookswhere 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>

編寫Service層的接口

package com.longdi.service;import com.longdi.pojo.Books;import java.util.List;/*** @author: 龍弟* @description* @date: 2021/9/27 21:03*/ public interface BookService {//增加一本書int addBook(Books books);//刪除一本書int deleteBookById( int id);//更新一本書int updateBook(Books books);//查詢一本書Books queryBookById(int id);//查詢全部的書List<Books> queryAllBook();Books queryBookByName(String bookName); }

Service層的實現類

package com.longdi.service;import com.longdi.dao.BookMapper; import com.longdi.pojo.Books; import org.springframework.stereotype.Service;import java.util.List;/*** @author: 龍弟* @description* @date: 2021/9/27 21:05*/public class BookServiceImpl implements BookService{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) {System.out.println("BookServiceImpl:updateBook=>"+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);} }

Spring整合Mybatis spring-dao.xml
以下為spring層

<?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/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!-- 配置整合mybatis --><!-- 1.關聯數據庫文件 --><context:property-placeholder location="classpath:database.properties"/><!-- 2.數據庫連接池 --><!--數據庫連接池dbcp 半自動化操作 不能自動連接c3p0 自動化操作(自動的加載配置文件 并且設置到對象里面)--><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.配置SqlSessionFactory對象 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 注入數據庫連接池 --><property name="dataSource" ref="dataSource"/><!-- 配置MyBaties全局配置文件:mybatis-config.xml --><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.longdi.dao"/></bean></beans>

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"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"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/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 掃描service相關的bean --><context:component-scan base-package="com.longdi.service" /><!--BookServiceImpl注入到IOC容器中--><bean id="BookServiceImpl" class="com.longdi.service.BookServiceImpl"><property name="bookMapper" ref="bookMapper"/></bean><!-- 配置事務管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 注入數據庫連接池 --><property name="dataSource" ref="dataSource" /></bean><!--aop事物支持--><!--結合aop實現事物的織入--><!--配置事物的通知--><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice><!--配置事物切入--><aop:config><aop:pointcut id="txPointCut" expression="execution(* com.longdi.dao.*.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/></aop:config></beans>

以下為SpringMVC層
配置web.xml

<?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><!--encodingFilter--><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>

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/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/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 配置SpringMVC --><!-- 1.開啟SpringMVC注解驅動 --><mvc:annotation-driven /><!-- 2.靜態資源默認servlet配置--><mvc:default-servlet-handler/><!-- 3.配置jsp 顯示ViewResolver視圖解析器 --><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><!-- 4.掃描web相關的bean --><context:component-scan base-package="com.longdi.controller" /></beans>

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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><import resource="spring-dao.xml"/><import resource="spring-service.xml"/><import resource="spring-mvc.xml"/></beans>

以上為SSM的環境配置,下面編寫Controller層和視圖層,實現書籍的CRUD功能

controller層 書籍的增刪改查功能

import java.util.ArrayList; import java.util.List;/*** @author: 龍弟* @description* @date: 2021/9/27 22:47*/ @Controller @RequestMapping("/book") 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 addBook(Books books){System.out.println("addBook=>"+books);bookService.addBook(books);return "redirect:/book/allBook";}//跳轉到修改頁面@RequestMapping("toUpdateBook")public String toUpdatePaper(int id,Model model){Books books = bookService.queryBookById(id);model.addAttribute("book",books);return "updateBook";}//修改書籍@RequestMapping("updateBook")public String updateBook(Books books){System.out.println("updateBook=>"+books);int i=bookService.updateBook(books);if(i>0){System.out.println("添加books成功"+books);}return "redirect:/book/allBook";}//刪除書籍@RequestMapping("/deleteBook/{bookId}")public String deleBook(@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);System.err.println("queryBook=>"+books);List<Books> list=new ArrayList<Books>();list.add(books);if(books==null){list=bookService.queryAllBook();model.addAttribute("error","未查到");}model.addAttribute("list",list);return "allBook";}}

編寫首頁index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE HTML> <html> <head><title>首頁</title><style>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;}</style> </head><h3><a href="${pageContext.request.contextPath}/book/allBook">進入到書籍頁面</a> </h3> </body> </html>

編寫書籍列表頁面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><a class="btn btn-primary" href="${pageContext.request.contextPath}/book/allBook">顯示全部書籍</a></div><div class="col-md-4 column"><div class="col-md-8 column"></div><%--查詢書籍--%><form class="form-inline" action="${pageContext.request.contextPath}/book/queryBook" method="post" style="float: right"><span style="color:red;font-weight: bold">${error}</span><input type="text" name="queryBookName" class="form-control" placeholder="請輸入要查詢的書籍名稱"><input type="submit" value="查詢" class="btn btn-primary"/></form></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>書籍數量</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/deleteBook/${book.getBookID()}">刪除</a></td></tr></c:forEach></tbody></table></div></div> </div>

添加書籍頁面 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>書籍數量:<input type="text" name="bookCounts"><br><br><br>書籍詳情:<input type="text" name="detail"><br><br><br><input type="submit" value="添加"></form></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()}"/>書籍數量:<input type="text" name="bookCounts" value="${book.getBookCounts()}"/>書籍詳情:<input type="text" name="detail" value="${book.getDetail() }"/><input type="submit" value="提交"/></form></div>

項目部署到tomcat中

項目結構圖


gitee網站下載源碼
github網站下載源碼

總結

以上是生活随笔為你收集整理的SSM配置地狱?一篇整合模板迅速解决!【建议收藏】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。