IDEA搭建SSM整合项目学习笔记

x33g5p2x  于2021-10-10 转载在 其他  
字(15.0k)|赞(0)|评价(0)|浏览(545)

前言:笔记是参考B站up主遇见狂神说,图片、代码都是哦。因为最近特别喜欢他教的课程,所以就一边跟着学习,一边在blog写笔记~(图片、代码来源狂神说Java,侵权必删!)
狂神说Java学习路线B站网站:https://www.bilibili.com/read/cv5702420

SSM整合:Mybatis层(Model)

1.创建一张表

2.创建maven项目在pom.xml中导入依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.ckm</groupId>
  5. <artifactId>ssmStudy</artifactId>
  6. <version>1.0-SNAPSHOT</version>
  7. <!-- 依赖:junit,数据库驱动,连接池,servlet,jsp,mybatis,mybatis-spring,spring -->
  8. <dependencies>
  9. <!--junit-->
  10. <dependency>
  11. <groupId>junit</groupId>
  12. <artifactId>junit</artifactId>
  13. <version>4.12</version>
  14. </dependency>
  15. <!--数据库驱动-->
  16. <dependency>
  17. <groupId>mysql</groupId>
  18. <artifactId>mysql-connector-java</artifactId>
  19. <version>5.1.47</version>
  20. </dependency>
  21. <!--数据库连接池-->
  22. <dependency>
  23. <groupId>com.mchange</groupId>
  24. <artifactId>c3p0</artifactId>
  25. <version>0.9.5.5</version>
  26. </dependency>
  27. <!--Servlet Jsp -->
  28. <dependency>
  29. <groupId>javax.servlet</groupId>
  30. <artifactId>servlet-api</artifactId>
  31. <version>2.5</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>javax.servlet.jsp</groupId>
  35. <artifactId>jsp-api</artifactId>
  36. <version>2.2</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>javax.servlet</groupId>
  40. <artifactId>jstl</artifactId>
  41. <version>1.2</version>
  42. </dependency>
  43. <!--Mybatis-->
  44. <dependency>
  45. <groupId>org.mybatis</groupId>
  46. <artifactId>mybatis-spring</artifactId>
  47. <version>2.0.3</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.mybatis</groupId>
  51. <artifactId>mybatis</artifactId>
  52. <version>3.5.3</version>
  53. </dependency>
  54. <!--Spring-->
  55. <dependency>
  56. <groupId>org.springframework</groupId>
  57. <artifactId>spring-webmvc</artifactId>
  58. <version>5.3.4</version>
  59. </dependency>
  60. <dependency>
  61. <groupId>org.springframework</groupId>
  62. <artifactId>spring-jdbc</artifactId>
  63. <version>5.3.4</version>
  64. </dependency>
  65. <!--pojo lombok-->
  66. <dependency>
  67. <groupId>org.projectlombok</groupId>
  68. <artifactId>lombok</artifactId>
  69. <version>1.18.18</version>
  70. </dependency>
  71. </dependencies>
  72. <!--静态资源导出问题-->
  73. <build>
  74. <resources>
  75. <resource>
  76. <directory>src/main/resources</directory>
  77. <includes>
  78. <include>**/*.properties</include>
  79. <include>**/*.xml</include>
  80. </includes>
  81. <filtering>true</filtering>
  82. </resource>
  83. <resource>
  84. <directory>src/main/java</directory>
  85. <includes>
  86. <include>**/*.properties</include>
  87. <include>**/*.xml</include>
  88. </includes>
  89. <filtering>true</filtering>
  90. </resource>
  91. </resources>
  92. </build>
  93. </project>

3.编写mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF8" ?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  3. <configuration>
  4. <!--配置数据源,交给Spring去做-->
  5. <typeAliases>
  6. <package name="com.ckm.pojo"/>
  7. </typeAliases>
  8. <mappers>
  9. <mapper class="com.ckm.dao.BookMapper"/>
  10. </mappers>
  11. </configuration>

4.编写applicationContext.xml

  1. <?xml version="1.0" encoding="UTF8" ?>
  2. <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">
  3. <import resource="spring-dao.xml"/>
  4. <import resource="spring-service.xml"/>
  5. <import resource="spring-mvc.xml"/>
  6. </beans>

5.编写database.properties

  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone-Asia/Shanghai
  3. jdbc.username=root
  4. jdbc.password=123456

6.编写pojo实体类Books

  1. package com.ckm.pojo;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @AllArgsConstructor
  7. @NoArgsConstructor
  8. public class Books {
  9. private int bootID;
  10. private String bookName;
  11. private int bookCounts;
  12. private String detail;
  13. }

7.编写dao层

BookMapper接口

  1. package com.ckm.dao;
  2. import com.ckm.pojo.Books;
  3. import org.apache.ibatis.annotations.Param;
  4. import java.util.List;
  5. public interface BookMapper {
  6. //增加一本书
  7. int addBook(Books books);
  8. //删除一本书
  9. int deleteBookById(@Param("bookId") int id);
  10. //更新一本书
  11. int updateBook(Books books);
  12. //查询一本书
  13. Books queryBookById(@Param("bookId")int id);
  14. //查询全部书
  15. List<Books> queryAllBook();
  16. }

BookMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.ckm.dao.BookMapper">
  4. <insert id="addBook" parameterType="Books">
  5. insert into ssmbuild.books (bookName, bookCounts, detail) values (#{bookName},#{bookCounts},#{detail});
  6. </insert>
  7. <delete id="deleteBookById" parameterType="int">
  8. delete from ssmbuild.books where bookID = #{bookId}
  9. </delete>
  10. <update id="updateBook" parameterType="Books">
  11. update ssmbuild.books set bookName = #{bookName},bookCounts=#{bookCounts},detail=#{detail} where bookID=#{bookID};
  12. </update>
  13. <select id="queryBookById" resultType="Books">
  14. select * from ssmbuild.books where bookID=#{bookId};
  15. </select>
  16. <select id="queryAllBook" resultType="Books">
  17. select * from ssmbuild.books;
  18. </select>
  19. </mapper>

8.编写Service层

BookService接口

  1. package com.ckm.service;
  2. import com.ckm.pojo.Books;
  3. import java.util.List;
  4. public interface BookService {
  5. //增加一本书
  6. int addBook(Books books);
  7. //删除一本书
  8. int deleteBookById(int id);
  9. //更新一本书
  10. int updateBook(Books books);
  11. //查询一本书
  12. Books queryBookById(int id);
  13. //查询全部书
  14. List<Books> queryAllBook();
  15. }

BookServiceImpl实现类

  1. package com.ckm.service;
  2. import com.ckm.dao.BookMapper;
  3. import com.ckm.pojo.Books;
  4. import java.util.List;
  5. public class BookServiceImpl implements BookService{
  6. //service层调用dao层 : 组合dao
  7. private BookMapper bookMapper;
  8. public void setBookMapper(BookMapper bookMapper) {
  9. this.bookMapper = bookMapper;
  10. }
  11. public int addBook(Books books) {
  12. return bookMapper.addBook(books);
  13. }
  14. public int deleteBookById(int id) {
  15. return bookMapper.deleteBookById(id);
  16. }
  17. public int updateBook(Books books) {
  18. return bookMapper.updateBook(books);
  19. }
  20. public Books queryBookById(int id) {
  21. return bookMapper.queryBookById(id);
  22. }
  23. public List<Books> queryAllBook() {
  24. return bookMapper.queryAllBook();
  25. }
  26. }

SSM整合:Spring层

1.编写spring-dao.xml

  1. <?xml version="1.0" encoding="UTF8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 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 http://www.springframework.org/schema/context/spring-context-4.2.xsd">
  3. <!--1.关联数据库配置文件-->
  4. <context:property-placeholder location="classpath:database.properties"/>
  5. <!--2.连接池 dbcp:半自动化操作,不能自动连接 c3p0:自动化操作(自动化的加载配置文件,并且可以自动设置到对象中) druid:hikari -->
  6. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  7. <property name="driverClass" value="${jdbc.driver}"/>
  8. <property name="jdbcUrl" value="${jdbc.url}"/>
  9. <property name="user" value="${jdbc.username}"/>
  10. <property name="password" value="${jdbc.password}"/>
  11. <!-- c3p0连接池的私有属性 -->
  12. <property name="maxPoolSize" value="30"/>
  13. <property name="minPoolSize" value="10"/>
  14. <!-- 关闭连接后不自动commit -->
  15. <property name="autoCommitOnClose" value="false"/>
  16. <!-- 获取连接超时时间 -->
  17. <property name="checkoutTimeout" value="10000"/>
  18. <!-- 当获取连接失败重试次数 -->
  19. <property name="acquireRetryAttempts" value="2"/>
  20. </bean>
  21. <!--3.sqlSessionFactory-->
  22. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  23. <property name="dataSource" ref="dataSource"/>
  24. <!--绑定mybatis的配置文件-->
  25. <property name="configLocation" value="classpath:mybatis-config.xml"/>
  26. </bean>
  27. <!--配置dao接口扫描包,动态的实现Dao接口可以注入到spring容器中-->
  28. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  29. <!--注入sqlSessionFactory-->
  30. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  31. <!--要扫描的dao包(spring通过反射实现实现类的操作)-->
  32. <property name="basePackage" value="com.ckm.dao"/>
  33. </bean>
  34. </beans>

2.编写spring-service.xml

  1. <?xml version="1.0" encoding="UTF8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 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 http://www.springframework.org/schema/context/spring-context-4.2.xsd">
  3. <!--扫描service下的包-->
  4. <context:component-scan base-package="com.ckm.service"/>
  5. <!--将我们所有的业务类,注入到spring,可以通过配置 或者 注解实现(@Service、@Autowired)-->
  6. <bean id="BookServiceImpl" class="com.ckm.service.BookServiceImpl">
  7. <property name="bookMapper" ref="bookMapper"/>
  8. </bean>
  9. <!--声明事务配置-->
  10. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  11. <!--注入数据源-->
  12. <property name="dataSource" ref="dataSource"/>
  13. </bean>
  14. </beans>

SSM:SpringMVC层

1.生成web项目

2.编写web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <!--DispatcherServlet-->
  4. <servlet>
  5. <servlet-name>springmvc</servlet-name>
  6. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  7. <init-param>
  8. <param-name>contextConfigLocation</param-name>
  9. <param-value>classpath:applicationContext.xml</param-value>
  10. </init-param>
  11. <load-on-startup>1</load-on-startup>
  12. </servlet>
  13. <servlet-mapping>
  14. <servlet-name>springmvc</servlet-name>
  15. <url-pattern>/</url-pattern>
  16. </servlet-mapping>
  17. <!--乱码过滤-->
  18. <filter>
  19. <filter-name>encoding</filter-name>
  20. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  21. <init-param>
  22. <param-name>encoding</param-name>
  23. <param-value>utf-8</param-value>
  24. </init-param>
  25. </filter>
  26. <filter-mapping>
  27. <filter-name>encoding</filter-name>
  28. <url-pattern>/*</url-pattern>
  29. </filter-mapping>
  30. <!--Session-->
  31. <session-config>
  32. <session-timeout>15</session-timeout>
  33. </session-config>
  34. </web-app>

3.编写spring-mvc.xml

  1. <?xml version="1.0" encoding="UTF8"?>
  2. <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 http://www.springframework.org/schema/mvc/spring-mvc.xsd ">
  3. <!--注解驱动-->
  4. <mvc:annotation-driven/>
  5. <!--静态资源过滤-->
  6. <mvc:default-servlet-handler/>
  7. <!--扫描包:controller-->
  8. <context:component-scan base-package="com.ckm.controller"/>
  9. <!--视图解析器-->
  10. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  11. <property name="prefix" value="/WEB-INF/jsp/"/>
  12. <property name="suffix" value=".jsp"/>
  13. </bean>
  14. </beans>

4.在WEB-INF下创建jsp包

以上就完成了SSM三层的整合!!!

SSM:查询书籍功能

1.编写controller

  1. package com.ckm.controller;
  2. import com.ckm.pojo.Books;
  3. import com.ckm.service.BookService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.beans.factory.annotation.Qualifier;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.ui.Model;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import java.util.List;
  10. @Controller
  11. @RequestMapping("/book")
  12. public class BookController {
  13. //controller调service层
  14. @Autowired
  15. @Qualifier("BookServiceImpl")
  16. private BookService bookService;
  17. //查询全部的书籍,并返回到页面
  18. @RequestMapping("/allBook")
  19. public String list(Model model){
  20. List<Books> list = bookService.queryAllBook();
  21. model.addAttribute("list",list);
  22. return "allBook";
  23. }
  24. }

2.编写index.jsp、allBook.jsp

index.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>book</title>
  5. <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: 5px; } </style>
  6. </head>
  7. <body>
  8. <h3>
  9. <%-- <a href="${pageContext.request.contextPath}/book/allBook">进入书籍页面</a>--%>
  10. <a href="/book/allBook">进入书籍页面</a>
  11. </h3>
  12. </body>
  13. </html>

allBook.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>书籍展示</title>
  5. </head>
  6. <body>
  7. <h1>书籍展示</h1>
  8. ${list}
  9. </body>
  10. </html>

整个项目结构

相关文章