SSM整合
Posted 想成为大师啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM整合相关的知识,希望对你有一定的参考价值。
环境要求
- IDEA
- mysql 8
- Tomcat 9.0.52
- Maven 3.6
要求:需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识;
数据库环境
创建一个存放书籍数据的数据库表
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=utf8
INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES
(1,'Java',1,'从入门到放弃'),
(2,'MySQL',10,'从删库到跑路'),
(3,'Linux',5,'从进门到进牢');
基本环境搭建
新建一Maven项目! ssmbuild , 添加web的支持
导入相关的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>8.0.22</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>
<!--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>
</dependencies>
Maven资源过滤设置
<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>
建立基本结构和配置框架!
- com.zya.pojo
- com.zya.dao
- com.zya.service
- com.zya.controller
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>
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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
Mybatis层编写
数据库配置文件 database.properties(mysql 8版本以上的需要加上时区)
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssmbuild?characterEncoding=utf-8&serverTimezone=GMT%2B8
username=root
password=zya11230318
数据库配置文件 database.properties(mysql 5版本)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=zya11230318
IDEA关联数据库
编写MyBatis的核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置数据源, 交给Spring去做 -->
<typeAliases>
<package name="com.zya.pojo"/>
</typeAliases>
<!-- 绑定接口 -->
<mappers>
<mapper class="com.zya.dao.BookMapper" />
</mappers>
</configuration>
编写数据库对应的实体类 com.zya.pojo.Books
package com.zya.pojo;
import lombok.*;
/**
* @author : byZYA
* @date : 2022/4/4 23:48
* @description : xxx
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Books
private int bookID;
private String bookName;
private int bookCounts;
private String detail;
编写Dao层的 Mapper接口!
package com.zya.dao;
import com.zya.pojo.Books;
import java.util.List;
/**
* @author : byZYA
* @date : 2022/4/4 23:51
* @description : xxx
*/
public interface BookMapper
/**
* 增加一本书
*/
int addBook(Books books);
/**
* 删除一本书
*/
int deleteBookById(int id);
/**
* 更新一本书
*/
int updateBook(Books books);
/**
* 查询一本书
*/
Books queryBookById(int id);
/**
* 查询所有的书
*/
List<Books> queryAllBook();
编写接口对应的 Mapper.xml 文件。需要导入MyBatis的包;
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zya.dao.BookMapper">
<insert id="addBook" parameterType="Books">
insert into books (bookName, bookCounts, detail)
values (#bookName, #booksCounts, #detail);
</insert>
<update id="updateBook">
update books set bookName=#bookName, bookCounts=#bookCounts, detail=#detail
where bookID=#bookID;
</update>
<delete id="deleteBookById" parameterType="int">
delete from books where bookID=#bookID;
</delete>
<select id="queryBookById" resultType="Books">
select * from books where bookID=#bookID;
</select>
<select id="queryAllBook" resultType="Books">
select * from books;
</select>
</mapper>
编写Service层的接口和实现类
接口:
package com.zya.service;
import com.zya.pojo.Books;
import java.util.List;
/**
* @author : byZYA
* @date : 2022/4/5 0:02
* @description : xxx
*/
public interface BookService
/**
* 增加一本书
*/
int addBook(Books books);
/**
* 删除一本书
*/
int deleteBookById(int id);
/**
* 更新一本书
*/
int updateBook(Books books);
/**
* 查询一本书
*/
Books queryBookById(int id);
/**
* 查询所有的书
*/
List<Books> queryAllBook();
实现类:
package com.zya.service;
import com.zya.dao.BookMapper;
import com.zya.pojo.Books;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
* @author : byZYA
* @date : 2022/4/5 0:03
* @description : xxx
*/
public class BookServiceImpl implements BookService
// service调dao层: 组合Dao
@Autowired
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)
return bookMapper.updateBook(books);
public Books queryBookById(int id)
return bookMapper.queryBookById(id);
public List<Books> queryAllBook()
return bookMapper.queryAllBook();
OK,到此,底层需求操作编写完毕!
Spring层
配置Spring整合MyBatis,我们这里数据源使用c3p0连接池;
我们去编写Spring整合Mybatis的相关的配置文件; spring-dao.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.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="$driver" />
<property name="jdbcUrl" value="$url" />
<property name="user" value="$username" />
<property name="password" value="$password" />
</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>
<!-- 4、配置dao接口扫描包, 动态的实现了Dao接口可以注入到Spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<!-- 要扫描的dao包 -->
<property name="basePackage" value="com.zya.dao" />
</bean>
</beans>
Spring整合service层
<?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/beans
http://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.zya.service" />
<!-- 2、将我们的所有业务类, 注入到Spring, 可以通过配置, 或者注解实现 -->
<bean id="BookServiceImpl" class="com.zya.service.BookServiceImpl">
<property name="bookMapper" ref="bookMapper" />
以上是关于SSM整合的主要内容,如果未能解决你的问题,请参考以下文章
2022新版图文详解SpringBoot整合SSM框架(附源码)