使用layui快速渲染表格

2022-08-16 18:46:22 浏览数 (3)

耳闻之不如目见之,目见之不如足践之。一一刘向《说苑》

我们首先准备一个接口,格式如下

代码语言: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

代码语言:javascript复制
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

代码语言:javascript复制
@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

代码语言:javascript复制
@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

代码语言:javascript复制
<!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>

1 人点赞