17.1 整合环境搭建
17.1.1 整合思路
由于Spring MVC是 Spring 框架中的一个模块,所以Spring MVC与Spring之间不存在整合的问题,只要引入相应JAR包就可以直接使用。因此SSM框架的整合就涉及Spring与MyBatis 的整合,以及Spring MVC 与 MyBatis的整合。
17.1.2 准备所需jar包
1.数据库连接池
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
</dependency>
- mysql驱动包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
- MyBatis整合Spring的适配包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
4.Spring mvcJAR包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
17.1.3 编写测试文件
在这里以我自己的项目为例:
1.创建WZNoteserver项目
2.在WZNoteserver项目下,创建名为conf的源文件夹,分别创建数据库常量配置文件(jdbc.properties),Spring配置文件(spring-mybatis.xml)以及MyBatis的配置文件(spring-service.xml)。
db.properties
spring-mybatis.xml
首先定义了读取db.properties文件的配置信息和数据源配置,然后配置了事务管理器并开启了事务注解。
接下来配置了用于整合MyBatis框架的MyBatis工厂信息。
最后定义了mapper扫描器来扫描Dao层以及扫描Service层的配置。
由于Spring已经配置了数据源信息以及mapper接口文件扫描器,所以在MyBatis的配置文件中只需要根据POJO类路径进行别名配置即可。
spring-service.xml
<context:component-scan base-package="com.whc.noteserver"></context:component-scan>
<!-- 启动注解版的MVC -->
<mvc:annotation-driven></mvc:annotation-driven>
17.2 整合应用测试
17.1节已经完成了SSM框架整合环境的搭建工作,可以说完成了这些配置之后,就已经完成了这三个框架大部分的整合工作。
接下来,以查询笔记本信息为例,来讲解SSN框架的整合开发。
1>在src目录下,创建一个com.whc.noteserver.entity包,并在包中创建持久化类Notebook.xml,编写后文件如下:
package com.whc.noteserver.entity;
import java.io.Serializable;
public class NoteBook implements Serializable {
public static int DELETE_YES=1;
public static int DELETE_NO=1;
private String id;
private String name;
private long addtime;
private int isdelete; //0未删除 1删除
private String userid; //关联用户表的id
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getAddtime() {
return addtime;
}
public void setAddtime(long addtime) {
this.addtime = addtime;
}
public int getIsdelete() {
return isdelete;
}
public void setIsdelete(int isdelete) {
this.isdelete = isdelete;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
@Override
public String toString() {
return "NoteBook [id=" + id + ", name=" + name + ", addtime=" + addtime + ", isdelete=" + isdelete + ", userid="
+ userid + "]";
}
}
在上面的文件中,编写了一个用于映射数据库表notebooks的客户持久化类,再类中分别定义了id,name,addtime,isdelete和userid属性。以及对应的getter/setter方法。
2>在src目录下,创建一个com.whc.noteserver.dao包,并在包中创建接口文件Notebook,dao以及对应的映射文件Notebook.xml,编辑后文件如下:
package com.whc.noteserver.dao;
import java.util.List;
import com.whc.noteserver.entity.NoteBook;
import com.whc.noteserver.param.NoteBookParam;
public interface NoteBookDao {
/**
* 获取笔记本信息
* @return
*/
public List<NoteBook> getNoteBook(NoteBookParam param);
}
<?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.whc.noteserver.dao.NoteBookDao" >
<select id="getNoteBook" resultType="com.whc.noteserver.entity.NoteBook">
select id,name,addtime,isdelete,userid from note_t_notebooks where isdelete=0 and userid=#{userid} order by addtime desc limit #{page},#{limit}
</select>
</mapper>
3>在src目录下,创建package com.whc.noteserver.service;包,然后再包中创建NoteBookService接口文件,定义获取笔记本信息查询的方法,如下所示:
package com.whc.noteserver.service;
import java.util.List;
import com.whc.noteserver.entity.NoteBook;
import com.whc.noteserver.param.NoteBookParam;
public interface NoteBookService {
/**
* 获取笔记本信息
* @return
*/
public List<NoteBook> getNoteBook(NoteBookParam param);
}
4>在src目录下,创建package com.whc.noteserver.serviceimpl;包,然后再包中创建NoteBookService接口的实现类NoteBookImpl,如下所示:
package com.whc.noteserver.serviceimpl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.whc.noteserver.dao.NoteBookDao;
import com.whc.noteserver.entity.NoteBook;
import com.whc.noteserver.param.NoteBookParam;
import com.whc.noteserver.service.NoteBookService;
@Service
public class NoteBookImpl implements NoteBookService{
/**
* 获取笔记本信息
* @return
*/
public List<NoteBook> getNoteBook(NoteBookParam param) {
return noteBookDao.getNoteBook(param);
}
}
5>在src目录下,创建package com.whc.noteserver.controller;包,然后再包中创建用于处理页面请求的控制器类NotebookController,如下所示:
package com.whc.noteserver.controller;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.UUID;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.whc.noteserver.entity.NoteBook;
import com.whc.noteserver.param.NoteBookParam;
import com.whc.noteserver.result.LayPage;
import com.whc.noteserver.service.NoteBookService;
import com.whc.noteserver.util.JsonResult;
//注解,组建扫描,加入Spring容器中
@Controller
//类controller的映射路径
@RequestMapping("/notebook")
public class NotebookController {
@Autowired
NoteBookService noteBookService;
/**
* 获取笔记本信息
* @return
*/
@RequestMapping("/getnotebook")
@ResponseBody
public JsonResult getNoteBook(NoteBookParam param,HttpSession session) {
/*
* //根据page和limit去数据库中取值 String
* userid=session.getAttribute("id")==null?"":session.getAttribute("id").
* toString(); param.setUserid(userid);
*/
if(param.getPage()!=0&¶m.getLimit()!=0) {
param.setPage((param.getPage()-1)*param.getLimit());
}
/* param.setPage((param.getPage()-1)*(param.getLimit())); */
List<NoteBook> list=noteBookService.getNoteBook(param);
int count=noteBookService.getCount(param);
//构建对象
LayPage lp=new LayPage();
lp.setCount(count);
lp.setList(list);
//lp:
return new JsonResult(JsonResult.STATE_SUCCESS,"",lp);
}
}
6>将项目发布到tomcat服务器并启动,在浏览器中访问地址,其显示效果如图所示:
17.3 本章小结
本章主要讲解了SSM框架的整合知识。首先对SSM框架整合的环境搭建进行了讲解,然后通过一个查询笔记本信息的案例讲解了具体的整合过程。通过本章的学习,读者能够了解了SSM框架整合的思路,掌握了SSM的整合过程以及如何使用。部分代码没有给,想要的话,可以私聊我。创作不易,点个赞再走吧。