接下来,搭建SSM框架整合的项目基础结构,具体如下所示。
1、搭建数据库环境
MySQL数据库中创建一个名称为ssm的数据库,在该数据库中创建一个名称为tb_book的表,并在tb_book表中插入数据。创建数据库和表,以及往表中插入数据的SQL语句如下所示。
CREATE DATABASE ssm;
USE ssm;
CREATE TABLE 'tb_book' (
'id' int(11) ,
'name' varchar(32) ,
'press' varchar(32) ,
'author' varchar(32) );
INSERT INTO 'tb_book' VALUES
(1, 'JavaEE, '某某出版社', '作者');
2、引入项目依赖
本案例中需要引入的相关依赖如下所示。
(1)Spring相关依赖。spring-context : Spring上下文;spring-tx : Spring事务管理;spring-jdbc : SpringJDBC;spring-test : Spring单元测试;spring-webmvc : Spring MVC核心。
(2)MyBatis相关依赖。mybatis : MyBatis核心;
(3)MyBatis与Spring整合包。mybatis-spring :MyBatis与Spring整合。
(4)数据源相关。druid : 阿里提供的数据库连接池。
(5)单元测试相关的依赖。junit : 单元测试,与spring-test放在一起做单元测试。
(6)ServletAPI相关的依赖。jsp-api : jsp页面使用request等对象;servlet-api : java文件使用request等对象。
(7)数据库相关的依赖。mysql-connector-java : mysql的数据库驱动包。
<dependencies>
<!-- Spring相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--Spring事务管理-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!--Spring MVC的相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</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.1</version>
</dependency>
<!--数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<!--单元测试相关的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 相关的依赖-->
<!--ServletAPI:引入servlet的功能-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--ServletAPI: jsp页面的功能包 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- 数据库驱动相关依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
3、创建实体类
创建名称为Book的实体类。
public class Book {
private Integer id; //图书id
private String name; //图书名称
private String press; //出版社
private String author; //作者
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
4、(1)创建三层架构对应模块的类和接口
创建名称为BookMapper的持久层接口,在BookMapper接口中定义findBookById()方法,通过图书id获取对应的图书信息。
import com.test.domain.Book;
public interface BookMapper {
public Book findBookById(Integer id);
}
(2)创建三层架构对应模块的类和接口
创建BookMapper接口对应的映射文件BookMapper.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.test.dao.BookMapper">
<!--根据id查询图书信息 -->
<select id="findBookById" parameterType="int"
resultType="com.test.domain.Book">
select * from book where id = #{id}</select>
</mapper>
(3)创建三层架构对应模块的类和接口
创建名称为BookService的业务层接口,在BookService接口中定义findBookById()方法,通过id获取对应的Book信息。
import com.test.domain.Book;
public interface BookService {
public Book findBookById(Integer id);
}
(4)创建三层架构对应模块的类和接口
创建BookService接口的业务层实现类BookServiceImpl。BookServiceImpl类实现BookService接口的findBookById()方法。
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookMapper bookMapper;
public Book findBookById(Integer id) {
return bookMapper.findBookById(id);
}
}
(5)创建三层架构对应模块的类和接口
创建名称为BookController的类。在BookController类中注入一个BookService对象,并且定义一个名称为findBookById()的方法。
@Controller
public class BookController {@Autowired
private BookService bookService;
@RequestMapping("/book")
public ModelAndView findBookById(Integer id){
Book book = bookService.findBookById(id);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("book.jsp");
modelAndView.addObject("book",book); return modelAndView; }}