耳闻之不如目见之,目见之不如足践之。一一刘向《说苑》
我们首先准备一个接口,格式如下
代码语言:javascript复制# 请求方法为POST,参数格式为:application/json
{"pageNum":1,"pageSize":10}
# 响应格式如下
{
"msg": "查询成功!",
"code": 200,
"data": {
"records": [],
"total": 0,
"size": 10,
"current": 1,
"searchCount": true,
"pages": 1
},
"success": true
}
编写Java
代码
DTO
代码语言:javascript复制package com.ruben.pojo.dto;
import lombok.Data;
/**
* @ClassName: PageDTO
* @Description: 我还没有写描述
* @Date: 2021/1/22 0022 22:51
* *
* @author: <achao1441470436@gmail.com>
* @version: 1.0
* @since: JDK 1.8
*/
@Data
public class PageDTO {
/**
* 页数
*/
private Integer pageNum;
/**
* 当前页数据条数
*/
private Integer pageSize;
/**
* 关键字
*/
private String keywords;
/**
* 编号
*/
private String id;
}
PO
package com.ruben.pojo.po;/**
* @ClassName: UserDataObject
* @Date: 2020/11/21 0021 15:55
* @Description:
*/
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.io.Serializable;
/**
* @ClassName: UserPO
* @Description: 我还没有写描述
* @Date: 2020/11/21 0021 15:55
* *
* @author: <achao1441470436@gmail.com>
* @version: 1.0
* @since: JDK 1.8
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class UserPO implements Serializable {
private static final long serialVersionUID = -1891465370283313432L;
private Integer id;
private String username;
private String password;
}
Controller
@RestController
@RequestMapping("user")
@DependsOn("SpringContextHolder")
public class UserController {
@Resource
private UserService userService;
/**
* 获取用户列表
*
* @return
*/
@PostMapping("userList")
public AjaxJson userList(@RequestBody PageDTO pageDTO) {
IPage<UserPO> page = userService.findList(pageDTO);
// 过滤密码
page.setRecords(page.getRecords().stream().peek(userPO -> userPO.setPassword(null)).collect(Collectors.toList()));
return AjaxJson.success("查询成功!").put("data", page);
}
}
Service
@Slf4j
@Service
public class UserServiceImpl implements UserService {
@Resource
private MpUserMapper mpUserMapper;
@Override
public IPage<UserPO> findList(PageDTO pageDTO) {
return mpUserMapper.selectPage(new Page<>(pageDTO.getPageNum(), pageDTO.getPageSize()), Wrappers.lambdaQuery());
}
}
然后就可以开始编写前端代码了,这里使用的是layui
,非常方便好用,这里就只写一个简单的Demo
啦
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>table</title>
<link rel="stylesheet" href="layui/css/layui.css" media="all">
</head>
<body onload="refreshList()">
<div class="layui-container">
<div class="layui-row">
<div class="layui-col-md12">
<button class="layui-btn layui-btn-normal layui-btn-fluid" onclick="refreshList()">刷新</button>
</div>
</div>
<div class="layui-row">
<div class="layui-col-md12">
<table id="demo" lay-filter="test"></table>
</div>
</div>
</div>
<script type="application/javascript" src="js/index.js"></script>
<script src="layui/layui.all.js"></script>
<script>
function refreshList() {
let table = layui.table;
//第一个实例
table.render({
elem: '#demo',
method: 'post', // 接口http请求类型,默认:get
url: '/user/userList', //数据接口
contentType: 'application/json', // 发送到服务端的内容编码类型
page: true, //开启分页
parseData: function (res) { //res 即为原始返回的数据
return {
"code": res.code, //解析接口状态
"msg": res.msg, //解析提示文本
"count": res.data.total, //解析数据长度
"data": res.data.records //解析数据列表
};
},
request: {
pageName: 'pageNum' //页码的参数名称,默认:page
, limitName: 'pageSize' //每页数据量的参数名,默认:limit
},
response: {
"statusCode": 200 //规定成功的状态码,默认:0
},
cols: [[ //表头
{field: 'id', title: 'ID', fixed: 'left'}
, {field: 'username', title: '用户名'}
]]
});
}
</script>
</body>
</html>