第五章 SSM
三、《任务列表案例》前端程序搭建和运行
1. 整合案例介绍和接口分析
1.1 案例功能预览

1.2 接口分析
1.2.1 学习计划分页查询
1.2.2 学习计划删除
1.2.3 学习计划保存
1.2.4 学习计划修改
2. 前端工程导入
2.1 前端环境搭建
2.1.1 node 安装
- 版本:16.16.0
- node 安装和测试:
- 打开官网 https://nodejs.org/en/ 下载对应操作系统的 LTS 版本。(16.16.0)
- 双击安装包进行安装,安装过程中遵循默认选项即可。安装完成后,可以在命令行终端输入 node -v 和 npm -v 查看 Node.js 和 npm 的版本号。
2.1.2 npm 使用(maven)
2.1.2.1 配置阿里镜像
npm config set registry https://registry.npmjs.org/
2.1.2.2 更新 npm 版本
npm install -g npm@9.6.6
2.1.2.3 npm 依赖下载命令
npm install 依赖名 / npm install 依赖名@版本
2.1.3 安装 vscode
2.2 导入前端程序

3. 启动测试
npm install //安装依赖
npm run dev //运行测试
四、《任务列表案例》后端程序实现和测试
1. 准备工作
1.1 准备数据库脚本
CREATE TABLE schedule (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
completed BOOLEAN NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO schedule (title, completed)
VALUES
('学习java', true),
('学习Python', false),
('学习C++', true),
('学习JavaScript', false),
('学习HTML5', true),
('学习CSS3', false),
('学习Vue.js', true),
('学习React', false),
('学习Angular', true),
('学习Node.js', false),
('学习Express', true),
('学习Koa', false),
('学习MongoDB', true),
('学习MySQL', false),
('学习Redis', true),
('学习Git', false),
('学习Docker', true),
('学习Kubernetes', false),
('学习AWS', true),
('学习Azure', false);
1.2 准备 pojo
@Data
public class Schedule {
private Integer id;
private String title;
private Boolean completed;
}
1.3 准备 R
public class R {
private int code = 200;
private boolean flag = true;
private Object data;
public static R ok(Object data){
R r = new R();
r.data = data;
return r;
}
public static R fail(Object data){
R r = new R();
r.code = 500;
r.flag = false;
r.data = data;
return r;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
1.4 准备 PageBean
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean<T> {
private int currentPage;
private int pageSize;
private long total;
private List<T> data;
}
2. 功能实现
2.1 分页查询
2.1.1 controller
@CrossOrigin
@RequestMapping("schedule")
@RestController
public class ScheduleController
{
@Autowired
private ScheduleService scheduleService;
@GetMapping("/{pageSize}/{currentPage}")
public R showList(@PathVariable(name = "pageSize") int pageSize, @PathVariable(name = "currentPage") int currentPage){
PageBean<Schedule> pageBean = scheduleService.findByPage(pageSize,currentPage);
return R.ok(pageBean);
}
}
2.1.2 service
@Slf4j
@Service
public class ScheduleServiceImpl implements ScheduleService {
@Autowired
private ScheduleMapper scheduleMapper;
@Override
public PageBean<Schedule> findByPage(int pageSize, int currentPage) {
PageHelper.startPage(currentPage,pageSize);
List<Schedule> list = scheduleMapper.queryPage();
PageInfo<Schedule> pageInfo = new PageInfo<>(list);
PageBean<Schedule> pageBean = new PageBean<>(pageInfo.getPageNum(),pageInfo.getPageSize(),pageInfo.getTotal(),pageInfo.getList());
log.info("分页查询结果:{}",pageBean);
return pageBean;
}
}
2.1.3 mapper
public interface ScheduleMapper {
List<Schedule> queryPage();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.alex.mapper.ScheduleMapper">
<select id="queryPage" resultType="schedule">
select * from schedule
</select>
</mapper>
2.2 计划添加
2.2.1 controller
@PostMapping
public R saveSchedule(@RequestBody Schedule schedule){
scheduleService.saveSchedule(schedule);
return R.ok(null);
}
2.2.2 service
@Override
public void saveSchedule(Schedule schedule) {
scheduleMapper.insert(schedule);
}
2.2.3 mapper
void insert(Schedule schedule);
<insert id="insert">
insert into schedule (title, completed)
values
(#{title}, #{completed});
</insert>
2.3 计划删除
2.3.1 controller
@DeleteMapping("/{id}")
public R removeSchedule(@PathVariable Integer id){
scheduleService.removeById(id);
return R.ok(null);
}
2.3.2 service
@Override
public void removeById(Integer id) {
scheduleMapper.delete(id);
}
2.3.3 mapper
void delete(Integer id);
<delete id="delete">
delete from schedule where id = #{id}
</delete>
2.4 计划修改
2.4.1 controller
@PutMapping
public R changeSchedule(@RequestBody Schedule schedule){
scheduleService.updateSchedule(schedule);
return R.ok(null);
}
2.4.2 service
@Override
public void updateSchedule(Schedule schedule) {
scheduleMapper.update(schedule);
}
2.4.3 mapper
void update(Schedule schedule);
<update id="update">
update schedule set title = #{title} , completed = #{completed}
where id = #{id}
</update>
3. 前后联调
3.1 后台项目根路径设计

3.2 启动测试即可