1.删除家居
1.需求分析
2.编写Service层
1.FurnService.java 添加方法
public void del(Integer id);
2.FurnServiceImpl.java 实现方法
@Override
public void del(Integer id) {
furnMapper.deleteByPrimaryKey(id);
}
3.单元测试
@Test
public void del() {
furnService.del(3);
}
3.编写Controller层
1.FurnController.java 添加处理delete请求的接口
@DeleteMapping("/del/{id}")
@ResponseBody
public Msg del(@PathVariable Integer id) {
furnService.del(id);
return Msg.success();
}
2.postman测试
4.修改 HomeView.vue实现删除功能
1.找到删除按钮位置添加确认弹窗
<el-table-column fixed="right" label="操作" width="120">
<template #default="scope">
<!--#default="scope"然后使用scope.row可以获取当前行的数据-->
<el-button @click="handleEdit(scope.row)" type="text">编辑</el-button>
<!--这里的@confirm事件,当用户点击确定的时候会触发-->
<el-popconfirm title="确认删除" @confirm="deleteById(scope.row.id)">
<template #reference>
<el-button type="danger" size="small">删除</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
2.编写删除家居方法
deleteById(id) {
request.delete(`/api/del/${id}`).then(
res => {
if (res.code === 200) {
this.$message(
{
type: "success",
message: "删除成功!"
}
)
} else {
this.$message(
{
type: "error",
message: "删除失败!"
}
)
}
this.list()
}
)
}
5.结果展示
6.课后练习:将表单回显方式改为从数据库获取信息
1.编写Service层
1.FurnService.java 添加方法
public Furn findById(Integer id);
2.FurnServiceImpl.java 实现方法
@Override
public Furn findById(Integer id) {
Furn furn = furnMapper.selectByPrimaryKey(id);
return furn;
}
2.编写Controller层
FurnController.java 添加方法
@ResponseBody
@GetMapping("/findById/{id}")
public Msg findById(@PathVariable Integer id) {
Furn furn = furnService.findById(id);
return Msg.success().add("furn", furn);
}
3.HomeView.vue 修改编辑按钮
4.HomeView.vue 编写触发方法
handleEditById(id) {
request.get(`/api/findById/${id}`).then(
res => {
this.form = res.extend.furn;
this.dialogVisible = true;
}
)
}
5.结果展示
2.分页展示
1.需求分析
2.思路分析
3.引入mybais pageHelper插件 pom.xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
4.配置mybatis分页拦截器 mybatis-config.xml
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="reasonable" value="true"/>
</plugin>
</plugins>
5.编写Controller
@RequestMapping("/furnsByPage")
@ResponseBody
public Msg listFurnsByPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Furn> all = furnService.findAll();
PageInfo pageInfo = new PageInfo(all, pageSize);
return Msg.success().add("pageInfo", pageInfo);
}
6.postman测试
7.HomeView.vue 引入分页控件
1.在div的最下面引入分页导航控件
<!-- 增加分页导航-->
<div style="margin: 10px 0">
<el-pagination
@size-change="handlePageSizeChange" @current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[5,10]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
2.数据池设置三个数据
3.结果展示
8.前端分页请求
1.HomeView.vue 修改list方法
list() {
request.get("/api/furns").then(
request.get("/api/furnsByPage", {
params: {
pageNum: this.currentPage,
pageSize: this.pageSize
}
}).then(
res => {
console.log(res)
this.tableData = res.extend.pageInfo.list
}
)
)
}
2.结果展示
9.根据pageNo和PageSize的变化实时分页
1.HomeView.vue 添加两个方法
handleCurrentChange(pageNo) {
this.currentPage = pageNo;
this.list();
},
handlePageSizeChange(pageSize) {
this.pageSize = pageSize;
this.list();
}
2.结果展示
10.前端分页查询三部曲(示意图)
11.条件分页
1.需求分析
2.编写Service层
1.FurnService.java 添加方法
public List<Furn> findByCondition(String name);
2.FurnServiceImpl.java 实现方法
@Override
public List<Furn> findByCondition(String name) {
FurnExample furnExample = new FurnExample();
FurnExample.Criteria criteria = furnExample.createCriteria();
if (StringUtils.hasText(name)) {
criteria.andNameLike("%" + name + "%");
}
return furnMapper.selectByExample(furnExample);
}
3.单元测试
@Test
public void findByCondition() {
List<Furn> list = furnService.findByCondition("桌子");
for (Furn furn : list) {
System.out.println(furn);
}
}
3.编写Controller层
1.FurnController.java
@RequestMapping("/listFurnsByCondition")
@ResponseBody
public Msg listFurnsByCondition(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize, @RequestParam(defaultValue = "") String search) {
PageHelper.startPage(pageNum, pageSize);
List<Furn> byCondition = furnService.findByCondition(search);
PageInfo pageInfo = new PageInfo(byCondition, pageSize);
return Msg.success().add("pageInfo", pageInfo);
}
2.postman测试
4.前端分页请求
1.双向绑定输入框信息,为查找绑定点击事件
2.编写根据model进行分页查询的函数
findByCondition() {
request.get("/api/listFurnsByCondition", {
params: {
pageNum: this.currentPage,
pageSize: this.pageSize,
search: this.search
}
}).then(
res => {
console.log(res)
this.total = res.extend.pageInfo.total;
this.tableData = res.extend.pageInfo.list;
}
)}
3.解决点击页号则不会进行条件查询的问题
handleCurrentChange(pageNo) {
this.currentPage = pageNo;
if (this.search) {
this.findByCondition();
} else {
this.list();
}
},
handlePageSizeChange(pageSize) {
this.pageSize = pageSize;
if (this.search) {
this.findByCondition();
} else {
this.list();
}
}
5.结果展示
1.条件分页第一页
2.条件分页第二页
12.分页查询总结