目前已经学习了 MyBatis 框架,Spring 框架,以及Spring MVC 框架。现阶段学习将这三个框架整合到一起,实现简单的前后端交互的曾删改差功能页面。
Mybatis 框架主要负责数据库的操作问题,以及数据回显。该框架将 SQL 与 Java 代码拆分开,降低耦合度的同时使代码可视程度更高,方便后期的 SQL 维护。
Spring 框架主要负责解决在企业级开发时业务逻辑层与其他层之间有大量耦合现象。将 Java 对象的创建和管理交给 Spring IOC 容器处理,减少了很多的对象重复创建,主要理念就是:谁用这个对象就由谁来创建!而不是事前创建完成再去调用!
Spring MVC 框架负责V-C交互的问题,即V(View:视图)和C(Controller:控制器)之间的交互问题,具体表现在:用户可以通过视图将请求数据提交给服务器端的控制器,而控制器可以接收到相关数据后进行处理,最终,给予客户端某个视图,使得客户端得到响应结果。
注:其实这些框架的出现就是为了实现一件事,代码解耦,优化程序!将原本写在一起的代码查分开来,各司其职,各自优化,使程序的开发过程更加简单,后续优化或者改动更加便捷,程序更加高效。
文章目录
- 一、环境准备
- 二、编辑 Dao 层(以及 MyBatis 相关配置)代码
- 三、编辑 Service 层接口和实现类逻辑代码
- 四、编辑 Spring 相关配置
一、环境准备
-
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`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES (1,'Java',1,'从入门到放弃'), (2,'MySQL',10,'从删库到跑路'), (3,'Linux',5,'从进门到进牢');
-
-
项目准备
-
创建基本的 maven 项目,并在 pom.xml 中导入相关依赖和姿态资源配置
-
依赖准备
<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> <!-- 数据库连接池:c3p0 --> <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> <!-- Mybatis整合Spring--> <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> <!-- Lombok工具 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</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>
-
-
在 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 { // 查询全部书籍信息 List<Books> queryBooksAll(); // 根据书籍ID查询 List<Books> queryBooksId(@Param("bookID") int id); // 新增书籍 int saveBooks(Books books); // 修改书籍信息 int updateBooks(Books books); // 删除书籍 int deleteBooks(Books books); }
-
接口对应的 xml-BooksMapper.xml
<?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.sys.mapper.BooksMapper"> <select id="queryBooksAll" resultType="com.sys.pojo.Books"> select * from books </select> <select id="queryBooksId" resultType="com.sys.pojo.Books"> select * from books where 1=1 <if test="bookID != null"> and bookID = #{bookID} </if> </select> <insert id="saveBooks" parameterType="com.sys.pojo.Books"> insert into books (bookName, bookCounts, detail) values (#{bookName}, #{bookCounts}, #{detail}) </insert> <update id="updateBooks" parameterType="com.sys.pojo.Books"> update books set bookCounts = #{bookCounts} where 1=1 <if test="bookID != null"> and bookID = #{bookID} </if> </update> <delete id="deleteBooks" parameterType="com.sys.pojo.Books"> delete from books where 1=1 <if test="booksID != null"> and booksID = #{booksID} </if> </delete> </mapper>
-
在resources 资源目录下创建资源配置文件
-
创建 MyBatis 配置文件: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> <!-- 数据源不再由 MyBatis 负责,交给 Spring 来做 --> <!-- 配置实体 --> <typeAliases> <package name="com.sys.pojo"/> </typeAliases> <!-- 配置mapper接口 --> <mappers> <mapper class="com.sys.mapper.BooksMapper"/> </mappers> </configuration>
-
创建数据源配置文件:database.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=root
-
三、编辑 Service 层接口和实现类逻辑代码
-
在 service 包下创建接口
public interface BooksService { // 查询全部书籍信息 List<Books> queryBooksAll(); // 根据ID查询 List<Books> queryBooksId(); // 新增书籍 int saveBooks(Books books); // 修改书籍信息 int updateBooks(Books books); // 删除书籍 int deleteBooks(Books books); }
-
创建对应的实现类
@Service public class BooksServiceImpl implements BooksService { // 依赖注入,通过该 bean 调用其中的方法 @Autowired BooksMapper bokksMapper; public List<Books> queryBooksAll() { List<Books> list = bokksMapper.queryBooksAll(); return list; } public List<Books> queryBooksId() { List<Books> 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 整合 Mybatis ,配置数据源,将数据源以 bean 的形式进行管理,创建 Spring-dao.xml
- 创建 Spring 配置文件:applicationContext.xml
```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>
```