SpringBoot项目碰到layui怎么用表格--【SB系列之011】

# SpringBoot系列文章目录

SpringBoot知识范围-学习步骤–【思维导图知识范围】


先上效果图

在这里插入图片描述

MVC模型

在这里插入图片描述
MVC的数据传输包括两个方面。

  • 浏览器给服务器的信息
  • 服务器给浏览器的信息

layui

layui用了几年,这个框架十分适合我们后台人员开发。简单易用,用的较多的模块肯定是table模块和form模块了。但是在一个开发团队中,不同的人开发水平的差异,如果没有调用统一的公共方法,那就会造成很多样式的不同和公共的bug出现到不同的页面 从而出现耗费过多的精力修改bug。所以我们需要做的是统一样式和方法的调用,将其二次封装以便于开发人员的调用。另一方面也能减少代码的冗余量。
也可以这么说,
UI框架,如果没有table 没有菜单,那这个UI就真的只是一堆皮肤了。
一般在页面的table的构成如下: 搜索区 头部工具栏 和table主体【包含对行和列 事件的处理】
在这里插入图片描述

首先分析layui 的输入

当然了,你得自己会一些layui ,不然的话,就以现在的网络,搬运工太多,而90%的搬运工事实上并没有啥精力帮你复盘。
也就是说,你看到的90%的代码不是不正确,而是,2023年的搬运工,搬了秦始皇的“兵马俑”。然后,你以为是2023年的新框架,套到项目里,那可想而知。
事实上,现在的学习新的知识,能找到合适的一个起步的代码真的就算是成功了一半。

而事实上,layui 这个开源项目也在迭代。
它本身就有两种参数接入的方法:

早期的方式一layui 参数接入

layui.use('table', function () {
            var table = layui.table;
            /*第一种原始写法*/
            
            table.render({
                id: 'laydictsList',
                elem: '#test',
                url: areasURL + "/base_dics/LayuigetPageList",
                cellMinWidth: 80,//全局定义常规单元格的最小宽度,layui 2.2.1 新增
                where: { txtFullName: null },
                page: true,
                //toolbar:'barDemo',
                limit: 10,
                limits: [2, 5, 10, 20, 30],
                text: {
                    none: '暂无相关数据!'//默认无数据
                },
                cols: [[
                  { type: 'checkbox', LAY_CHECKED: false },
                  { field: 'dicsid', width: 80, title: 'ID', sort: true, hide: true },
                  { field: 'code', width: 80, title: '编号' },
                  { field: 'sortnum', width: 80, title: '序号', sort: true },
                  { field: 'fullname', width: 80, title: '名称' },
                  { field: 'diccategoryname', title: '所属类别', width: '30%', minWidth: 100 }, //minWidth:局部定义当前单元格的最小宽度,layui 2.2.1 新增
                  { field: 'experience', title: '操作' }
                ]]
            });
        });

后期的方式二layui参数接入:

layui.use('table', function () {
            var table = layui.table;
           /*第二种改进版*/
			   table.render({
				   id: 'laydictsList',
				   elem: '#test',
				   url: areasURL + "/base_dics/getPageList",
				   method: "post",
				   request: {
					   pageName: 'PageNum', //页码的参数名称,默认:page
					   limitName: 'PageSize' //每页数据量的参数名,默认:limit
				   },
				   response: {
					   statusName: 'ReturnType', //数据状态的字段名称,默认:code
					   statusCode: true,//成功的状态码,默认:0
					   msgName: 'ReturnMsg', //状态信息的字段名称,默认:msg
					   countName: 'ReturnCount', //数据总数的字段名称,默认:count
					   dataName: 'ReturnData', //数据列表的字段名称,默认:data
				   },
				   cellMinWidth: 80,//全局定义常规单元格的最小宽度,layui 2.2.1 新增
				   where: { txtFullName: null },
				   page: true,
				   //toolbar:'barDemo',
				   limit: 10,
				   limits: [2, 5, 10, 20, 30],
				   text: {
					   none: '暂无相关数据!'//默认无数据
				   },
				   cols: [[
					 { type: 'checkbox', LAY_CHECKED: false },
					 { field: 'dicsid', width: 80, title: 'ID', sort: true, hide: true },
					 { field: 'code', width: 80, title: '编号' },
					 { field: 'sortnum', width: 80, title: '序号', sort: true },
					 { field: 'fullname', width: 80, title: '名称' },
					 { field: 'diccategoryname', title: '所属类别', width: '30%', minWidth: 100 }, //minWidth:局部定义当前单元格的最小宽度,layui 2.2.1 新增
					 { field: 'experience', title: '操作' }
				   ]]
			   });
		   });

如果前台有些功底的人可以看出来,后期的适应性更强,说白了就是早期的你要改变JAVA里的代码,按着layui 的格式,而后期的,有一些名字可以转换一下。
可能有人说,那灵活的就好。
这个东西就难说了。
mybatis 比hibernate 灵活。mybatis 赢了。
SSM 比springboot 还灵活,配置更多,但是SSM被淘汰了。
微信小程序的JS,CSS都比网页版的不灵活,但是,微信小程序现在流行了。
所以,这个东西本就没有那么绝对,最后看的是市场,还有就是大公司他们的支持。哪种方式好,我也无权下结论,只是从IT打工者的角度,工资高的就是好的。OC 就是比android 好。JAVA比C++ 好,不过现在JAVA工资降了,那就是C++ 比JAVA好。
不过,今天我拿出来的这个例子,严格的符合早期的方式一。所以,你如果要用方式二的,那直接换JS就行了。反正方式一的后台,也可以用到方式二上。

接口JSON格式

要求后台返回数据格式必须为:
至于json的工具,我一般是用json编辑器JSONedit.exe ,后面资源上提供下载吧。这名字太常见了,怕是百度的话,得百度很久。你说你起一个“彪哥JSON编辑器”这样的名字也好找呀

{
  "msg": "success",
  "code": "0",
  "data": [
    {
      "title": "for循环输出",
      "problemId": 1139
    },
    {
      "title": "测试2",
      "problemId": 1138
    },
    {
      "title": "测试1",
      "problemId": 1137
    },
    {
      "title": "for循环-Plus",
      "problemId": 1140
    },
    {
      "title": "第一个C++程序",
      "problemId": 1141
    }
  ]
}

起后台,构建 springBoot 项目

中间过程略了。

按着layui 的接口写吧。

/**响应编码*/
    private int code;
    /**响应消息*/
    private String msg;
    /**数据总量*/
    private int count;
    /**数据*/
    private Object data;

加一个数据总量的count 总得给一共多少页呀。
然后就是一定要写这个toString 了。不然,给前台传啥格式,不自己定义,那程序还不得飞到银河系边上呀。

 @Override
    public String toString() {
        return "ResultBean{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", count=" + count +
                ", data=" + data +
                '}';
    }

完整的返回类代码

也不知道看的小朋友知不知道lombok,反正一个类也不差这点get/set了。怼上再说

package com.example.lizi.domain;

//结果集类
public class ResultBean {
    /**响应编码*/
    private int code;
    /**响应消息*/
    private String msg;
    /**数据总量*/
    private int count;
    /**数据*/
    private Object data;

    public ResultBean() {
    }

    public ResultBean(int code, String msg, int count, Object data) {
        super();
        this.code = code;
        this.msg = msg;
        this.count = count;
        this.data = data;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "ResultBean{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", count=" + count +
                ", data=" + data +
                '}';
    }
}

controlloer类

@RequestMapping("/allUser")
    @ResponseBody
    public ResultBean allUser(@RequestParam(defaultValue = "1") Integer page,
                                  @RequestParam(defaultValue = "10") Integer limit){
        System.out.println("表格查询开始ResultBean");
        List<OrdinaryUser> shl = userService.findAllUser();
        int count = shl.size();
        int startIndex = (page - 1) * limit;
        int endIndex = Math.min(startIndex + limit,count);
        List<OrdinaryUser> pageList= shl.subList(startIndex,endIndex);
        ResultBean resultBean = new ResultBean(0,"查询成功",count,pageList);
        System.out.println("输出resultBean:"+resultBean);
        return resultBean;
    }

service

 public List<OrdinaryUser> findAllUser(){
        return users.findAllUser();
    }

mapper

    //查询所有用户
    @Select("select * from ordinaryUser")
    public List<OrdinaryUser> findAllUser();

上面只给的是相关这一个操作的。
然后,辅助的东西,哐哐的往上一怼。
在这里插入图片描述
这样后台就算是整好了。
登陆/录? 就这点功能还登啥陆呀

前台

先在template 下面怼上一个 html.
关于 springBoot 的目录参考《SpringBoot项目中WEB页面放哪里
先选择最复杂的这个template 哈哈,简单的项目,整的小活还全套的佐料了。
然后,你得有一个controller 跳进这个 template 里呀。

@Controller
public class UserAllShl {
    @Autowired
    public OrdinaryUserService ordinaryUserService;

    @RequestMapping("/UserAll")
    public String allShl(){
        System.out.println("开始跳转到allShl");
        return "administrators/ordinary.html";
    }

}

然后,这个页面里的JS再请求那个 /allUser

在这里插入代码片
把这个过程 串起来!!
在这里插入图片描述
在这中间,你可能碰到多次的 badmapping … 白页,后台报错,启动不成功。MAVEN编译报错。访问地址404…
每当碰到这种情况的时候,你就这么想,你说这么多的错误,这么多的问题,这么难的环境,一通操作猛如虎,怎么工资才2500呢?
所以,2500的工资,跟25000的工资差的其实就是你会调多少错。不管你信不信,10年前也有2500的工资,现在入职1-2年的,也有25000的工资。
当然了,本例还是要提供一下全套的代码的。
都调通了,自然就出现了效果图。注:搜索功能失效。新增,删除都不好使
在这里插入图片描述

据说,用猫的鼠标指针会带来好运?

在这里插入图片描述

资源下载

SpringBoot项目碰到layui怎么用表格–【SB系列之011】配套资源
https://download.csdn.net/download/dearmite/88230628

POP猫鼠标指针方案资源下载
https://download.csdn.net/download/dearmite/88230629

附:怎样安装自己喜欢的鼠标指针方案 如何安装鼠标指针

下载并安装指针方案:
01
下载自己喜欢的鼠标指针方案,解压:
在这里插入图片描述

02
解压后我们会看到文件夹下有很多 ani动态光标文件 中有一个 ini文件,右键单击 ini文件(安装文件.ini),执行【安装】命令:
在这里插入图片描述

03
等待安装结束后打开【控制面板】→【鼠标】(Win XP 与 Win 7 操作均相同):
在这里插入图片描述

04
打开【鼠标属性】窗口,选择【指针】选项卡,在方案中找到刚才安装的指针方案【Crystal Clear】,然后单击窗口又下脚的【应用】→【确定】完成安装!
在这里插入图片描述
第二种方案
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

项目花园范德彪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值