首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
运维.售后
›
性能优化
›
SpringBoot整合SSM
返回列表
发新帖
SpringBoot整合SSM
[复制链接]
发表于
10 小时前
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
用 SpringBoot 搭一个能查数据库的完整工程,是每个后端新手都要过的一道坎。本文以「部门(dept)单表查询」为例,按导入依赖、写 yml 配置、写 pojo 与 mapper、补全 service 与 controller 的顺序,把每一步的代码都原样贴出来,最后跑测试类、启动项目验证查询结果。照着做一遍,SSM 整合的脉络就清楚了。
整合前的整体步骤
话不多说,直接开工。要完成一次 SpringBoot 版 SSM 整合,整体就下面五步,代码其实是跟着这一步步往下写的:
导入依赖
创建 yml 配置文件
写 dao 层
准备静态页面
写测试类验证
导入依赖与版本搭配
第一个动作是建好 Maven 工程并引入依赖。这里用的是 spring-boot-starter-parent 3.3.4,JDK 17 编译,Web、MySQL 驱动、JDBC、MyBatis-Plus、Druid 连接池、测试与 Lombok 一并加进来,完整 pom 如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- <parent>-->
<!-- <artifactId>springdemo</artifactId>-->
<!-- <groupId>org.example</groupId>-->
<!-- <version>1.0-SNAPSHOT</version>-->
<!-- </parent>-->
<modelVersion>4.0.0</modelVersion>
<artifactId>boot</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<!-- 引入SpringBoot父级依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.4</version>
</parent>
<dependencies>
<!-- SpringBoot 整合springmvc依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- 整合jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.7.3</version>
</dependency>
<!-- 整合mybatis -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.7</version>
</dependency>
<!-- 整合druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.23</version>
</dependency>
<!-- junit测试 +springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>3.3.5</version>
<scope>test </scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
<!-- JUnit 4 测试框架依赖,用于编写和运行单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
复制代码
yml 里配置 MySQL 数据源
第二步写 application.yml:SpringBoot 默认端口 8080,数据源指定 MySQL 的 com.mysql.jdbc.Driver,连接的是本地库 db1,账号 root、密码 1234,连接池换成 Druid 的 com.alibaba.druid.pool.DruidDataSource。
# 启动端口号
server:
port: 8080
spring:
# 整合 mysql数据源 连接池
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///db1
username: root
password: 1234
type: com.alibaba.druid.pool.DruidDataSource
复制代码
pojo 与 mapper 的写法
业务代码只有两层。pojo 层建一个 Dept 类,字段是 id、dname、loc,加 @Data 让 Lombok 自动生成 getter/setter/toString:
package com.it.pojo;
import lombok.Data;
@Data
public class Dept {
private int id;
private String dname;
private String loc;
}
复制代码
mapper 层用注解方式写 SQL,接口上加 @Mapper 交给容器做动态代理,方法上写一条 @Select 按 id 查部门:
package com.it.mapper;
import com.it.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
//动态扫描代理
@Mapper
public interface DeptMapper {
@Select("select * from dept where id=#{id}")
public Dept findById(int id);
}
复制代码
先用测试类验证查询
在动手写 controller 之前,建议先用一个测试类把 mapper 跑通,确认 SQL 和数据源没问题,免得后面一层层排查。加上 @SpringBootTest 启动容器,注入 DeptMapper 后调用 findById(1):
package com.it.mapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DeptMapperTest {
@Autowired
public DeptMapper deptMapper;
@Test
void findById() {
System.out.println(deptMapper.findById(1));
}
}
复制代码
service 层与 impl 实现类
service 接口只定义一个 findById,把 mapper 的调用包一层,方便以后换实现类:
package com.it.service;
import com.it.pojo.Dept;
public interface DeptService {
public Dept findById(int id);
}
复制代码
实现类 DeptServiceImpl 加 @Service 注解,用 @Autowired 注入 mapper,重写方法后直接返回查询结果:
package com.it.service.impl;
import com.it.mapper.DeptMapper;
import com.it.pojo.Dept;
import com.it.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
public DeptMapper deptMapper;
@Override
public Dept findById(int id) {
return deptMapper.findById(id);
}
}
复制代码
controller 暴露一个查询接口
最后到 controller 层。这里用的是 @Controller 加 @ResponseBody,一个方法就相当于一个 servlet,对外暴露 /getList 接口,接收 id 参数,查询后打印并返回:
package com.it.controller;
import com.it.pojo.Dept;
import com.it.service.DeptService;
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;
@Controller
public class DeptController {
@Autowired
private DeptService deptService;
// 一个方法就是一个servlet
@RequestMapping("/getList")
@ResponseBody
public Dept getList(int id){
Dept dept = deptService.findById(id);
System.out.println(dept);
return dept;
}
}
复制代码
启动项目查看查询结果
全部代码写完后启动项目,访问 8080 端口对应的接口即可拿到 JSON 数据,控制台同时打印出查到的部门对象。项目结构的实际效果见下图。
这套流程走下来,整合的先后顺序就是:配置能连库 → mapper 能查 → 测试类能跑通 → service 包一层 → controller 对外暴露。
编辑提示:把 pom 和 yml 抄进自己工程时先确认 MySQL 库名、账号密码与你本地一致,跑通 mapper 测试再往下写,能省掉大半排查时间。
回复
使用道具
举报
返回列表
火影
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表