Springboot整合Layui+pagehelper实现分页功能、图片查看功能(十分详细)

一、前期准备

1、在pom.xml文件中导入pagehelper
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>1.2.10</version>
</dependency>
2、导入LayUI插件

在这里插入图片描述

3、在配置文件中开启分页插件
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.page-size-zero=true
4、准备一个table并设置id
//准备一个div或者一个table用来放数据,一定要设置id,后面操作会用到
<table class="layui-table layui-hide" id="test" lay-filter="test"></table>

二、具体实现

1、前端js部分,注释写的很细务必仔细观看
    layui.use(function () {
        var laypage = layui.laypage;
        var table = layui.table
        table.render({
            elem: '#test',		//对应table标签里的id
            url: 'picture',	//从后台获取数据的url
            id: 'test',			//此处也需要设置这个属性,后边会用到
            method: 'get',
            page:true,
            dataType: 'json',
            parseData: function (res) {
                return {
                    "code": 0,
                    "msg": "",
                    "count": res.total,//从返回的json数据中取出总行数
                    data: res.list//返回的json数据有两层,layui不支持多层数据,所以是res.list
                }
            },
            cols:
                [
                    [
                        {type: "checkbox", width: "8%", align: "center"},
                        {field: 'pictureId', title: '图片ID', width: "8%", align: "center"},
                        {field: 'pictureName', title: '图片名', width: "10%", align: "center"},
                        {field: 'pictureSize', title: '图片大小', width: "10%", align: "center"},
                        {field: 'pictureType', title: '图片文件类型', width: "10%", align: "center"},
                        {field: 'pictureUploadDate', title: '图片上传日期', width: "12%", align: "center"},
                        {field: 'picturePath', title: '图片路径', width: "12%", align: "center",templet: function (data){
                            return "<div οnclick='show_img(this)'><img src=' " + data.picturePath + "'></div>"
                            }//templet定义一个函数,后端返回的数据data传进去,这里我们要的是图片路径,用字符串拼接才会解析成路径,我给div绑定一个单击事件,实现图片查看功能
                        },
                        {field: 'pictureStyleId', title: '图片类型ID', width: "10%", align: "center" },
                        {field: 'pictureClicksNum', title: '点击次数', width: "10%", align: "center" },
                        {field: 'right', title: '操作', width: "15%", toolbar: '#barDemo'},
                    ]
                ],
        });
        //监听点击方法
        $(document).on('click', '.preview-all', function (data) {
            let clickObject = data.target; //点击的对象
            let url = clickObject.src; //图片地址
            previewPicture(url);//调用预览方法
        });

        //图片预览,传url
        function previewPicture(url) {
            layer.photos({
                photos: {
                    "title": '预览图',
                    "id": 222,
                    "start": 0,
                    "data": [{
                        "src": url
                    }]
                }
                // ,closeBtn: 1 //是否显示关闭按钮
            });
        }     
    });
2、后台代码

这里layui会默认传给后台limit(每页条数)和page(页面大小)两个参数,
默认limit=10,page=1
Controller

@Controller
public class PictureController {
    @Autowired
    private PictureService pictureService;

    @RequestMapping(value = "/picture", method = RequestMethod.GET)
    @ResponseBody//该注解会默认将List数据转换成json
    public PageInfo<Picture> getAllPicture(int limit, int page) {
        return pictureService.getAllPicture(limit,page);
    }
}

Service
接口

public interface PictureService {
    PageInfo<Picture> getAllPicture(int limit, int page);
}

实现类

@Service
public class PictureServiceImpl implements PictureService {

    @Autowired
    private PictureMapper pictureMapper;
    @Override
    public PageInfo<Picture> getAllPicture(int limit,int page) {
        System.out.println("----------------每页条数:"+limit+"第几页:"+page);
        //开启分页功能
        PageHelper.startPage(page,limit);
	    //查询所有图片信息
        List<Picture> allPicture = pictureMapper.getAllPicture();
        //获取分页相关数据
        PageInfo<Picture> pages = new PageInfo<>(allPicture, 5);
        System.out.println("===================="+pages);
        return pages;
    }
}

Mapper

@Mapper
public interface PictureMapper {
    List<Picture> getAllPicture();
}
<select id="getAllPicture" resultType="com.godxia.picture.bean.Picture">
	select * from t_picture
</select>

整体调用后的结果(我用postman做的测试):

{
    "total": 22,
    "list": [
        {
            "pictureId": 1,
            "pictureName": "01.jpg",
            "pictureSize": 4,
            "pictureType": ".jpg",
            "pictureUploadDate": "2022-09-07 09:55:56.0",
            "picturePath": "pic/01.jpg",
            "pictureStyleId": "1"
        },
        {
            "pictureId": 2,
            "pictureName": "02.jpg",
            "pictureSize": 5,
            "pictureType": ".jpg",
            "pictureUploadDate": "2022-09-06 15:58:54.0",
            "picturePath": "pic/02.jpg",
            "pictureStyleId": "2"
        },
        {
            "pictureId": 3,
            "pictureName": "03.jpg",
            "pictureSize": 5,
            "pictureType": ".jpg",
            "pictureUploadDate": "2022-09-20 15:58:58.0",
            "picturePath": "pic/03.jpg",
            "pictureStyleId": "1"
        },
        {
            "pictureId": 4,
            "pictureName": "04.jpg",
            "pictureSize": 5,
            "pictureType": ".jpg",
            "pictureUploadDate": "2022-09-19 15:58:21.0",
            "picturePath": "pic/04.jpg",
            "pictureStyleId": "2"
        },
        {
            "pictureId": 5,
            "pictureName": "05.jpg",
            "pictureSize": 5,
            "pictureType": ".jpg",
            "pictureUploadDate": "2022-09-06 15:58:24.0",
            "picturePath": "pic/05.jpg",
            "pictureStyleId": "1"
        },
        {
            "pictureId": 6,
            "pictureName": "06.jpg",
            "pictureSize": 5,
            "pictureType": ".jpg",
            "pictureUploadDate": "2022-09-28 15:58:28.0",
            "picturePath": "pic/06.jpg",
            "pictureStyleId": "3"
        }
    ],
    "pageNum": 1,
    "pageSize": 6,
    "size": 6,
    "startRow": 1,
    "endRow": 6,
    "pages": 4,
    "prePage": 0,
    "nextPage": 2,
    "isFirstPage": true,
    "isLastPage": false,
    "hasPreviousPage": false,
    "hasNextPage": true,
    "navigatePages": 5,
    "navigatepageNums": [
        1,
        2,
        3,
        4
    ],
    "navigateFirstPage": 1,
    "navigateLastPage": 4
}

三、最终结果

1、分页总览

在这里插入图片描述

2、图片查看

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实现 springbootlayui 表格分页的步骤如下: 1. 前端页面:在使用 layui 表格的页面引入 layui.js 和 layui.css 文件。 2. 后端代码:使用 springboot 构建后端服务,通过 HTTP 请求向前端发送数据。 3. 分页参数:在前端页面,使用 layui table 控件定义分页参数,例如:每页显示数量、当前页码等。 4. 分页请求:使用 layui table 控件发送请求到后端,后端通过分页参数从数据库中查询相应的数据并返回给前端。 5. 表格渲染:前端接收到后端返回的数据,使用 layui table 控件将数据渲染到表格中,实现表格分页功能。 6. 翻页事件:使用 layui table 控件监听翻页事件,在事件触发时重新发送请求到后端,实现下一页或上一页的数据加载。 希望以上步骤能帮助您实现 springbootlayui 表格分页。 ### 回答2: 在SpringBootLayui实现表格分页的过程中,可以通过以下步骤实现: 1. 在后端代码中,首先引入Layui的DataTable插件,使用Layui提供的数据表格组件实现分页效果。 2. 在后端代码中,通过SpringBoot的控制器(Controller)接收前端传递的分页参数,例如当前页码(page)和每页显示数量(limit)。 3. 在后端代码中,根据接收到的分页参数,利用数据库查询语句查询数据表中的数据,并根据传递的分页参数进行分页操作。 4. 将查询到的分页数据返回给前端。 5. 在前端代码中,使用Layui的table模块生成表格,并设置分页参数。 6. 通过JavaScript在前端代码中调用Layui的table模块提供的分页方法,根据后端返回的分页数据动态生成分页组件。 7. 在前端代码中,利用JavaScript将查询到的数据填充到表格的相应位置。 总结来说,SpringBootLayui实现表格分页的核心是后端对分页参数的接收和数据的分页操作,以及前端对后端返回的分页数据的处理和分页组件的生成。通过这样的操作,可以实现便捷的表格分页功能。 ### 回答3: 在Spring BootLayui结合使用时,实现表格分页可以通过以下步骤来实现: 1. 在后端使用Spring Boot开发接口,查询数据库获取分页数据。可以使用Spring Data JPA或MyBatis等持久层框架进行数据库操作。 2. 定义一个Java类来表示表格数据的结果集,包含总记录数和当前页数据列表。 3. 在后端接口中,根据前端传递的页码和每页显示的记录数,通过查询条件进行筛选,并使用分页查询语句获取对应页码的数据。 4. 将查询结果封装到步骤2中定义的实体类中,并返回给前端。 5. 在前端的HTML页面中引入Layui框架的相关CSS和JS文件。 6. 在HTML页面中使用Layui提供的表格组件,结合异步加载数据的方式进行数据展示和分页操作。 7. 在Layui的表格组件中,配置分页参数,包括每页显示的记录数、总记录数以及分页样式等。 8. 在Layui的表格组件的回调事件中,监听分页操作,并通过Ajax请求后端接口获取指定页的数据,并将返回的数据展示到表格中。 通过以上步骤,可以实现Spring BootLayui结合使用的表格分页功能。需要注意的是,在后端接口中,除了分页查询外,还需要进行条件查询、排序等操作,以满足不同的业务需求。同时,前端页面中还可以添加筛选条件、搜索功能等,以提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值