SpringBoot系列教程19--Web开发05之XML方式实现SSM整合
作者:一一哥
注意:
本系列教程案例继续在之前的基础上进行编写!
Spring Boot可以帮助我们快速搭建一个SSM框架环境,那么该怎么具体实现SSM整合呢?
以下给大家介绍在SpringBoot项目中进行SSM整合的两种方式:
一. 在SpringBoot中以XML方式进行SSM整合
1. 创建一个新的module--demo08
![](https://img7.php1.cn/3cdc5/cef1/bdf/45e6794ed6fd3dd4.jpeg)
2.将项目改造成Spring Boot项目
在项目中添加父依赖以及编译插件。
org.springframework.bootspring-boot-starter-parent2.2.5.RELEASE
org.springframework.bootspring-boot-maven-plugin
3. 在pom文件中添加相关依赖
org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-jdbcmysqlmysql-connector-java5.1.46org.mybatis.spring.bootmybatis-spring-boot-starter1.3.1com.github.pagehelperpagehelper-spring-boot-starter1.2.3org.projectlomboklombok
4.在该pom.xml文件中添加识别xml文件的配置
src/main/java**/*.xml
5. 配置application.properties
我们可以创建出一个application.properties文件,然后主要是设置数据源和mybaits属性。
#数据源配置
spring.datasource.username=root
spring.datasource.password=syc
spring.datasource.url=jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver#mybatis配置
mybatis.type-aliases-package=com.yyg.boot.domain
mybatis.mapper-locations=classpath:com/yyg/boot/domain/*.xml
6. 创建数据库以及student表
#数据库脚本
CREATE TABLE student (id INTEGER(20) PRIMARY KEY AUTO_INCREMENT NOT NULL,NAME VARCHAR(30),sex VARCHAR(4));#添加数据语句
INSERT INTO student (NAME,sex) VALUES('三胖','男');
INSERT INTO student (NAME,sex) VALUES('特没谱','女');
7. 创建pojo实体对象
创建出“com.yyg.boot.domain”包,在该包下面创建一个Student实体类!
package com.syc.boot.domain;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {private Integer id;private String name;private String sex;}
8.编写StudentMapper接口类
创建一个“com.yyg.boot.mapper”包,在该包下面创建出StudentMapper接口。
package com.yyg.boot.mapper;import com.yyg.boot.domain.Student;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface StudentMapper {List getAll();Student getById(@Param("id") int id);
}
9.编写对应的StudentMapper.xml文件
我们编写一个StudentMapper.xml文件,存放在“com.yyg.boot.mapper”包里面。
![](https://img7.php1.cn/3cdc5/cef1/bdf/bee002180da8b80f.jpeg)
10.编写service及其实现类
创建一个“com.yyg.boot.service”的包及其子包“impl”。
10.1 StudentService接口
在service包下面创建StudentService接口。
package com.yyg.boot.service;import com.yyg.boot.domain.Student;import java.util.List;public interface StudentService {/*** 分页参数*/List getAll(Integer pageNum, Integer pageSize);Student get(Integer id);}
10.2 StudentServiceImpl实现类
在impl包下面,创建StudentServiceImpl实现类。
package com.yyg.boot.service.impl;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yyg.boot.domain.Student;
import com.yyg.boot.mapper.StudentMapper;
import com.yyg.boot.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class StudentServiceImpl implements StudentService {&#64;Autowiredprivate StudentMapper studentMapper;&#64;Overridepublic List getAll(Integer pageNum, Integer pageSize) {//在查询之前设置分页,利用Mybatis的分页插件实现分页PageHelper.startPage(pageNum, pageSize);List list &#61; studentMapper.getAll();PageInfo info &#61; new PageInfo<>(list);return info.getList();}&#64;Overridepublic Student get(Integer id) {return studentMapper.getById(id);}}
11.编写Controller类
创建出一个“com.yyg.boot.web”的包&#xff0c;在该包下面创建一个Controller类。
package com.syc.boot.web;
import com.syc.boot.domain.Student;
import com.syc.boot.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;&#64;RestController
&#64;RequestMapping("/stu")
public class StudentController {&#64;Autowiredprivate StudentService studentService;&#64;RequestMapping(value &#61; "/find", method &#61; RequestMethod.GET)public List find(&#64;RequestParam(name &#61; "pageNum",required &#61; false,defaultValue &#61; "1") Integer pageNum,&#64;RequestParam(name&#61;"pageSize" ,required &#61; false,defaultValue &#61; "20") Integer pageSize) {return studentService.getAll(pageNum,pageSize);}&#64;RequestMapping(value &#61; "/{id}", method &#61; RequestMethod.GET)public Student get(&#64;PathVariable(name &#61; "id") Integer id) {return studentService.get(id);}
}
12. 编写程序入口
在“com.yyg.boot”包的根目录下&#xff0c;创建程序员入口类&#xff01;
package com.yyg.boot;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 以XML方式整合SSM.* MapperScan:扫描Mybatis接口文件*/
&#64;MapperScan("com.yyg.boot.mapper")
&#64;SpringBootApplication
public class SSMApplication {public static void main(String[] args) {SpringApplication.run(SSMApplication.class, args);}}
注意:在应用程序入口类上配置&#64;MapperScan扫描mapper接口文件所在包!
整个项目目录结构
![](https://img7.php1.cn/3cdc5/cef1/bdf/47df6d85b33197f4.jpeg)
13.测试ssm整合及分页效果
启动项目&#xff0c;进行测试。
13.1 不分页查询全部
![](https://img7.php1.cn/3cdc5/cef1/bdf/ea47a98cc9a9075e.jpeg)
13.2 根据id查询某个对象&#xfffc;
![](https://img7.php1.cn/3cdc5/cef1/bdf/90c2e4d36e716234.jpeg)
13.3 分页查询
![](https://img7.php1.cn/3cdc5/cef1/bdf/57272a7b047755c6.jpeg)