上海专业做网站的,wordpress 显示多媒体,51网站空间相册在哪里,软件工程师证目前已经学习了 MyBatis 框架#xff0c;Spring 框架#xff0c;以及Spring MVC 框架。现阶段学习将这三个框架整合到一起#xff0c;实现简单的前后端交互的曾删改差功能页面。 Mybatis 框架主要负责数据库的操作问题#xff0c;以及数据回显。该框架将 SQL 与 Jav… 目前已经学习了 MyBatis 框架Spring 框架以及Spring MVC 框架。现阶段学习将这三个框架整合到一起实现简单的前后端交互的曾删改差功能页面。 Mybatis 框架主要负责数据库的操作问题以及数据回显。该框架将 SQL 与 Java 代码拆分开降低耦合度的同时使代码可视程度更高方便后期的 SQL 维护。 Spring 框架主要负责解决在企业级开发时业务逻辑层与其他层之间有大量耦合现象。将 Java 对象的创建和管理交给 Spring IOC 容器处理减少了很多的对象重复创建主要理念就是谁用这个对象就由谁来创建而不是事前创建完成再去调用 Spring MVC 框架负责V-C交互的问题即V(View:视图)和C(Controller:控制器)之间的交互问题具体表现在用户可以通过视图将请求数据提交给服务器端的控制器而控制器可以接收到相关数据后进行处理最终给予客户端某个视图使得客户端得到响应结果。 注其实这些框架的出现就是为了实现一件事代码解耦优化程序将原本写在一起的代码查分开来各司其职各自优化使程序的开发过程更加简单后续优化或者改动更加便捷程序更加高效。 文章目录 一、环境准备二、编辑 Dao 层以及 MyBatis 相关配置代码三、编辑 Service 层接口和实现类逻辑代码四、编辑 Spring 相关配置4.1 Spring 整合 Mybatis配置数据源将数据源以 bean 的形式进行管理4.2 Spring 整合 service 层4.3 整合 Spring MVC 层4.3.1 引入 web 框架支持配置 web.xml4.3.1 配置整合 Spring MVC 一、环境准备 IDEA、MySql、Tomcat、Maven 数据库准备 创建数据库 CREATE DATABASE ssmbuild;在 ssmbuild 库中创建相关的表并导入数据 -- 指定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)
) ENGINEINNODB DEFAULT CHARSETutf8INSERT INTO books(bookID,bookName,bookCounts,detail)VALUES
(1,Java,1,从入门到放弃),
(2,MySQL,10,从删库到跑路),
(3,Linux,5,从进门到进牢);项目准备 创建基本的 maven 项目并在 pom.xml 中导入相关依赖和姿态资源配置 依赖准备 dependencies!--Junit--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency!--数据库驱动--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version/dependency!-- 数据库连接池c3p0 --dependencygroupIdcom.mchange/groupIdartifactIdc3p0/artifactIdversion0.9.5.2/version/dependency!--Servlet - JSP --dependencygroupIdjavax.servlet/groupIdartifactIdservlet-api/artifactIdversion2.5/version/dependencydependencygroupIdjavax.servlet.jsp/groupIdartifactIdjsp-api/artifactIdversion2.2/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdjstl/artifactIdversion1.2/version/dependency!--Mybatis--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.2/version/dependency!-- Mybatis整合Spring--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion2.0.2/version/dependency!--Spring--dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.1.9.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.1.9.RELEASE/version/dependency!-- Lombok工具 --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.12/versionscopeprovided/scope/dependency/dependencies静态资源配置 !-- 配置静态资源避免找不到相关的文件 --buildresourcesresourcedirectorysrc/main/java/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resourceresourcedirectorysrc/main/resources/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resource/resources/build在 Java 资源目录下创建之后需要的包 二、编辑 Dao 层以及 MyBatis 相关配置代码 在 pojo 包下创建 Books 表的实体类 Data
AllArgsConstructor
NoArgsConstructor
public class Books {private int bookID;private String bookName;private int bookCounts;private String detail;
}创建 Mapper 接口以及与接口对应的 xml public interface BooksMapper {// 查询全部书籍信息ListBooks queryBooksAll();// 根据书籍ID查询ListBooks queryBooksId(Param(bookID) int id);// 新增书籍int saveBooks(Books books);// 修改书籍信息int updateBooks(Books books);// 删除书籍int deleteBooks(Books books);
}接口对应的 xml-BooksMapper.xml ?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.sys.mapper.BooksMapperselect idqueryBooksAll resultTypecom.sys.pojo.Booksselect * from books/selectselect idqueryBooksId resultTypecom.sys.pojo.Booksselect * from books where 11if testbookID ! nulland bookID #{bookID}/if/selectinsert idsaveBooks parameterTypecom.sys.pojo.Booksinsert into books (bookName, bookCounts, detail)values (#{bookName}, #{bookCounts}, #{detail})/insertupdate idupdateBooks parameterTypecom.sys.pojo.Booksupdate books set bookCounts #{bookCounts} where 11if testbookID ! nulland bookID #{bookID}/if/updatedelete iddeleteBooks parameterTypecom.sys.pojo.Booksdelete from books where 11if testbooksID ! nulland booksID #{booksID}/if/delete/mapper在resources 资源目录下创建资源配置文件 创建 MyBatis 配置文件MyBatis-Config.xml ?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration!-- 数据源不再由 MyBatis 负责交给 Spring 来做 --!-- 配置实体 --typeAliasespackage namecom.sys.pojo//typeAliases!-- 配置mapper接口 --mappersmapper classcom.sys.mapper.BooksMapper//mappers
/configuration创建数据源配置文件database.properties jdbc.drivercom.mysql.jdbc.Driver
jdbc.urljdbc:mysql://localhost:3306/ssmbuild?useSSLtrueuseUnicodetruecharacterEncodingutf8
jdbc.usernameroot
jdbc.passwordroot三、编辑 Service 层接口和实现类逻辑代码 在 service 包下创建接口 public interface BooksService {// 查询全部书籍信息ListBooks queryBooksAll();// 根据ID查询ListBooks queryBooksId();// 新增书籍int saveBooks(Books books);// 修改书籍信息int updateBooks(Books books);// 删除书籍int deleteBooks(Books books);}创建对应的实现类 Service
public class BooksServiceImpl implements BooksService {// 依赖注入通过该 bean 调用其中的方法AutowiredBooksMapper bokksMapper;public ListBooks queryBooksAll() {ListBooks list bokksMapper.queryBooksAll();return list;}public ListBooks queryBooksId() {ListBooks list bokksMapper.queryBooksId(1);return list;}public int saveBooks(Books books) {Books book new Books();book.setBookName(Java 八股文背);book.setBookCounts(5);book.setDetail(从Java基础到框架的知识点面试需要背);return bokksMapper.saveBooks(book);}public int updateBooks(Books books) {Books book new Books();book.setBookID(1);book.setBookCounts(4);return bokksMapper.updateBooks(books);}public int deleteBooks(Books books) {Books book new Books();book.setBookID(3);return bokksMapper.deleteBooks(books);}
}四、编辑 Spring 相关配置 创建 Spring 配置文件applicationContext.xml ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd/beans4.1 Spring 整合 Mybatis配置数据源将数据源以 bean 的形式进行管理 配置 Spring 整合 dao层创建 Spring-dao.xml ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd/beans具体有如下步骤 1、导入数据源文件 context:property-placeholder locationclasspath:database.properties/2、配置数据库连接池 !--数据库连接池
dbcp 半自动化操作 不能自动连接
c3p0 自动化操作自动的加载配置文件 并且设置到对象里面--
bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSource!--配置数据库连接池相关属性,通过 EL 表达式获取database.properties中的具体配置--property namedriverClass value${jdbc.driver}/property namejdbcUrl value${jdbc.url}/property nameuser value${jdbc.username}/property namepassword value${jdbc.password}/!--配置c3p0连接池私有属性--property namemaxPoolSize value30/!--最大连接池大小--property nameminPoolSize value10/!--最小连接池大小--!-- 关闭连接后不自动commit --property nameautoCommitOnClose valuefalse/!-- 获取连接超时时间 --property namecheckoutTimeout value10000/!-- 当获取连接失败重试次数 --property nameacquireRetryAttempts value2/
/bean3、配置SqlSessionFactory对象 bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean!--将数据连接池注入到 SqlSessionFactory 对象中--property namedataSource refdataSource/!--配置 Mybatis全局配置文件--property nameconfigLocation valueclasspath:mybatis-config.xml/
/bean 4、配置扫描Dao接口包动态实现Dao接口注入到spring容器中 bean classorg.mybatis.spring.mapper.MapperScannerConfigurer!-- 将对象sqlSessionFactory注入sqlSessionFactoryBeanName对象中 --property namesqlSessionFactoryBeanName valuesqlSessionFactory/!-- 配置Spring自动扫描mapper包下的接口会被自动扫描 --property namebasePackage valuecom.sys.dao/
/bean文件完整配置 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd!--配置整合 MyBatis --!--1.关联数据源配置文件--context:property-placeholder locationclasspath:database.properties/!--2.配置数据库连接池--!--数据库连接池dbcp 半自动化操作 不能自动连接c3p0 自动化操作自动的加载配置文件 并且设置到对象里面--bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSource!--配置数据库连接池相关属性,通过 EL 表达式获取database.properties中的具体配置--property namedriverClass value${jdbc.driver}/property namejdbcUrl value${jdbc.url}/property nameuser value${jdbc.username}/property namepassword value${jdbc.password}/!--配置c3p0连接池私有属性--property namemaxPoolSize value30/!--最大连接池大小--property nameminPoolSize value10/!--最小连接池大小--!-- 关闭连接后不自动commit --property nameautoCommitOnClose valuefalse/!-- 获取连接超时时间 --property namecheckoutTimeout value10000/!-- 当获取连接失败重试次数 --property nameacquireRetryAttempts value2//bean!--3.配置SqlSessionFactory对象--bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean!--将数据连接池注入到 SqlSessionFactory 对象中--property namedataSource refdataSource/!--配置 Mybatis全局配置文件--property nameconfigLocation valueclasspath:mybatis-config.xml//bean!-- 4.配置扫描Dao接口包动态实现Dao接口注入到spring容器中 --bean classorg.mybatis.spring.mapper.MapperScannerConfigurer!-- 将对象sqlSessionFactory注入sqlSessionFactoryBeanName对象中 --property namesqlSessionFactoryBeanName valuesqlSessionFactory/!-- 配置Spring自动扫描mapper包下的接口会被自动扫描 --property namebasePackage valuecom.sys.dao//bean/beans4.2 Spring 整合 service 层 配置 Spring 整合 service 层创建 Spring-Service.xml ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd/beans具体步骤如下 1、配置 service 包下的自动扫描 !--1.扫描service包下的所有类不包括接口--context:component-scan base-packagecom.sys.service/2、将业务类注入到 Spring 容器中由容器进行管理 !--2.将我们所有的业务类注入到Spring中可以通过配置或者注解实现--bean idBooksServiceImpl classcom.sys.service.impl.BooksServiceImplproperty namebooksMapper refbooksMapper//bean3、配置事务管理器管理注入进来的数据库连接池 !--3.配置事务管理器--bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager!--注入数据库连接池--property namedataSource refdataSource//bean文件完整配置 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd!--1.扫描service包下的所有类不包括接口--context:component-scan base-packagecom.sys.service/!--2.将我们所有的业务类注入到Spring中可以通过配置或者注解实现--bean idBooksServiceImpl classcom.sys.service.impl.BooksServiceImplproperty namebooksMapper refbooksMapper//bean!--3.配置事务管理器--bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager!--注入数据库连接池--property namedataSource refdataSource//bean/beansSpring 层配置完成Spring 就是一个大杂烩一个容器这些配置都可以整合到 Spring 容器当中。 4.3 整合 Spring MVC 层 配置整合 Spring MVC 层 4.3.1 引入 web 框架支持配置 web.xml 具体步骤如下 配置 DispatcherServlet !--DispatcherServlet--servletservlet-nameDispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-name!--一定要注意:我们这里加载的是总的配置文件之前被这里坑了-- param-valueclasspath:applicationContext.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-nameDispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping配置乱码过滤 !--配置乱码过滤encodingFilter--filterfilter-nameencodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-param/filterfilter-mappingfilter-nameencodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping配置 Session 过期时间 !--Session过期时间--session-configsession-timeout15/session-timeout/session-config文件完整配置 ?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--DispatcherServlet--servletservlet-nameDispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-name!--一定要注意:我们这里加载的是总的配置文件之前被这里坑了-- param-valueclasspath:applicationContext.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-nameDispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping!--encodingFilter--filterfilter-nameencodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-param/filterfilter-mappingfilter-nameencodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!--Session过期时间--session-configsession-timeout15/session-timeout/session-config/web-app4.3.1 配置整合 Spring MVC 创建 Spring-MVC.xml