一篇文章教你整合ssm配置,可以收藏。
所谓的ssm框架就是mybatis+spring+springmvc,下面一篇文章将带你了解如何整合ssm。
我上传了一个免费的解释资源,里面有这篇文章的一些个人解释,说的很幽默,简单的说明了为什么要有这个东西,帮助大家理解,有兴趣可以去下一下对照一下(拿来把你!)
ssm框架整合的个人说明-Java文档类资源-CSDN文库
大部分配置不需要再去改动,修改数据库配置以及包名,直接拿来用即可。
目录
pom.xml
mvc功能实现
实体类
持久层功能接口Dao
持久层Mapper映射文件
业务层接口Service
业务层实现类
mybatis配置
mybatis-config.xml
数据库的配置信息
database.properties文件
spring配置
spring-dao.xml
spring-service.xml
applicationContext.xml
SpringMVC配置
spring-mvc.xml
web.xml
pom.xml
首先介绍的是依赖,这些是用到的最基本的依赖
<!-- 依赖:Junit,数据库驱动,连接池,Servlet,jsp,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.26</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.22</version></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>
mvc功能实现
实体类
Books
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {private int bookID;private String booName ;private int bookCounts;private String detail;
}
持久层功能接口Dao
BookMapper
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();
}
持久层Mapper映射文件
BookMapper.xml建议最好与BookMapper类放在同一包下
<?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.LL.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></mapper>
业务层接口Service
BookService,真实的业务逻辑
public interface BookService {//增加一本书int addBook(Books books);//删除一本书int deleteBookById( int id);//更新一本书int updateBook(Books books);//查询一本书Books queryBookById(int id);//查询全部的书List<Books> queryAllBook();
}
业务层实现类
BookServicelmpl
@Service
public class BookServiceImpl implements BookService{//service调dao层:组合Dao@Autowiredprivate BookMapper bookMapper;public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}@Overridepublic int addBook(Books books) {return bookMapper.addBook(books);}@Overridepublic int deleteBookById(int id) {return bookMapper.deleteBookById(id);}@Overridepublic int updateBook(Books books) {return bookMapper.updateBook(books);}@Overridepublic Books queryBookById(int id) {return bookMapper.queryBookById(id);}@Overridepublic List<Books> queryAllBook() {return bookMapper.queryAllBook();}
}
mybatis配置
mybatis-config.xml
在这里,我们将配置数据源的信息交给spring去做,只给实体类起一个别名,注册mapper。
<?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>
<!-- 配置数据源,交给spring去做--><typeAliases><package name="com.LL.pojo"/></typeAliases><mappers><mapper class="com.LL.dao.BookMapper"></mapper></mappers></configuration>
数据库的配置信息
database.properties文件
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456789
spring配置
spring-dao.xml
1.配置数据库,先导入数据库信息文件,然后在配置一个c3p0的数据库连接池
2.SqlSessionFactory是mybatis的一个接口,为我们提供SqlSession对象,我们只需要为其配置两个属性。
1)声明数据源,将配置好的DataSource注入到dataSource属性中
2)将配置好的mybatis-config.xml注入到configLocation中
即可得到一个SqlSessionFactorybean。
扫描dao文件包,为其注入sqlSessionFactory,这样使用时不需要我们再去配置。
<?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.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--1.关联数据库配置--><!--导入配置文件--><context:property-placeholder location="classpath:database.properties"/><!--2.连接池dbcp:半自动化 不能自动连接c3p0:半自动化操作(自动化加载配置文件,而且可以自动设置到对象中!)druid: hikari:--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"></property><property name="jdbcUrl" value="${jdbc.url}"></property><property name="user" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property><!--c3p0连接池的私有属性--><property name="minPoolSize" value="10"/><property name="maxPoolSize" value="30"/><!--关闭连接后不自动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"/><!--绑定mybatis配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/></bean><!--配置dao接口扫描包,动态的实现了Dao接口可以注入到Spring容器中!--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!--注入sqlSessionFactory--><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property><!--要扫描的dao--><property name="basePackage" value="com.LL.dao"></property></bean></beans>
spring-service.xml
在这个文件中,我们配置自动扫描功能,这样我们在实现业务类时可以通过bean的方式去配置,也可以通过(@Autowired)自动注入的方式去配置
<?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.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--1.扫描service下的包--><context:component-scan base-package="com.LL.service"/><!--2.将我们的所有业务类注入到spring中,可以通过配置,或者注解实现--><bean id="BookServiceImpl" class="com.LL.service.BookServiceImpl"><property name="bookMapper" ref="bookMapper"/></bean><!--3.声明式事务--><bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!--注入数据源--><property name="dataSource" ref="dataSource"></property></bean><!--4.aop事务支持--></beans>
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="classpath:spring-dao.xml"/><import resource="classpath:spring-mvc.xml"/><import resource="classpath:spring-service.xml"/></beans>
SpringMVC配置
spring-mvc.xml
1.开始springmvc注解驱动
2.静态资源过滤,让Spring MVC不处理静态资源 .css .js .html .mp3 .mp4等
3.自动扫描包,让指定包下的注解生效,由IOC容器统一管理
4.视图解析器,自动为url添加前缀和后缀。
<?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:mvc="http://www.springframework.org/schema/mvc"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/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--1.注解驱动--><mvc:annotation-driven/><!--2.静态资源过滤--><mvc:default-servlet-handler/><!--3.扫描包:controller--><context:component-scan base-package="com.LL.controller"/><!--4.视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean>
</beans>
web.xml
DispatchServlet负责协调和组织不同组件完成请求处理并返回响应工作,DispatcherServlet 是 SpringMVC统一的入口,所有的请求都通过它。
<?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"><!--DispatchServlet--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationConfig.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--乱码过滤--><filter><filter-name>encoding</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>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--Session--><session-config><session-timeout>15</session-timeout></session-config>
</web-app>
本篇文章是学习秦疆老师的课程整合的,老师的文章放在下面:
狂神说SpringMVC05:整合SSM框架 (qq.com)
一篇文章教你整合ssm配置,可以收藏。相关推荐
- 一篇文章教你学会使用SpringBatch 监听器Listener
文章目录 一.SpringBatch监听器 二.搭建SpringBatch开发环境 三.监听器详细介绍 1.JobExecutionListener 2.StepExecutionListener 3 ...
- 一篇文章教你学会使用SpringBoot实现文件上传和下载
文章目录 一.搭建SpringBoot开发环境 1.创建项目 2.配置application.properties参数 3.实体响应类和异常信息类 4.创建FileController 二.接口测试 ...
- 一篇文章教你学会实现模糊搜索结果的关键词高亮显示
一篇文章教你学会实现模糊搜索结果的关键词高亮显示 话不多说,先看效果图: 代码如下: <!DOCTYPE html> <html lang="en">< ...
- 一篇文章教你学会如何使用CSS中的雪碧图(CSS Sprite)
一篇文章教你学会如何使用CSS中的雪碧图(CSS Sprite) 一.什么是雪碧图? 雪碧图(CSS Sprite)又叫CSS精灵图,是一种网页图片应用处理方式,他允许你将一个页面设计到 所有零星图片 ...
- MySQL优化-一篇文章就够了(转发加收藏吧)
关注我,一个仍存梦想的屌丝程序员,每天为你分享高质量编程博客. 回复 "代金券" 免费获取腾讯云和阿里云代金券 前言 说起MySQL的查询优化,相信大家收藏了一堆:不能使用SEL ...
- 【手把手教你整合SSM项目并且完成入门项目到成功运行!!!】
整合ssm框架的步骤 一. 准备工作:创建一个存放学生数据的数据库表 CREATE DATABASE `ssm_student`; USE `ssm_student`; DROP TABLE IF E ...
- 手把手教你整合SSM实现一个简单的CRUD项目
目录 项目笔记 一.项目简介 二.项目步骤 1.搭建数据库环境 2.dao层编写(基于mybatis框架) 3.service层编写(基于spring框架) 4.controller层编写(基于spr ...
- 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程重要
前言 SSM(Spring+SpringMVC+Mybatis)是目前较为主流的企业级架构方案,不知道大家有没有留意,在我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教 ...
- (第2篇)一篇文章教你轻松安装hadoop
摘要: 这篇文章将会手把手教你安装hadoop,只要你细心按照文章中的步骤操作,hadoop肯定能正确安装,绝对不会让你崩溃 博主福利 给大家赠送一套hadoop视频课程 授课老师是百度 hadoop ...
最新文章
- 【Java 网络编程】TCP API 简介 ( Socket | ServerSocket )
- I2C总线及AT24C02读写实验报告
- Python+selenium自动化:页面加载慢、超时加载情况下内容已经加载完毕的快速执行脚本解决方案,页面加载时间过长优化方案
- 【控制】《多无人机协同控制技术》周伟老师-第12章-基于 Multi-Agent 的多无人机协同控制仿真平台的设计与实现
- (转)Linux环境变量的设置和查看方法
- CentOS下的抓包服务:rpcapd(WinPcap)
- can通道采样频率_哪个是嵌入式开发中最常用的外部总线:RS232?RS485?CAN?LIN?……...
- 【读书笔记】.NET本质论第四章-Programming with Type(Part Two)
- 云小课 | 华为云KYON:网段零修改上云,简单又好用
- 学习小感之浅谈学习兴趣之路
- 新生儿操作系统操作手册
- BitBake用户手册-3.语法和操作
- 如何利用python计算即期利率_即期利率的定义_即期利率的计算公式_即期利率和远期利率...
- Java实现 蓝桥杯 算法训练 递归求二项式系数
- 均值不等式中考_数学不等式解题技巧
- 计算机三级网络技术知识点大全(七)
- 我的NVIDIA开发者之旅-Jetson Nano 2gb教你怎么训练模型(完整的模型训练套路)
- 阿克曼(Ackmann)函数
- 科学计算与matlab语言期末答案,科学计算与MATLAB语言答案
- android.intent.action.MAIN和singleTask模式 的奇怪问题