前端是leyui后端sqlserver和maraDB进行分页

项目场景:

前端是leyui后端sqlserver和maraDB进行分页,两种数据库在后端分页的不同写法


解决方案:

前端:

定义table,表格的格式在接口返回时进行创建,根据id进行绑定

html 复制代码
 <div class="layui-tab-item layui-show" style="padding-top: 10px">
        <div class="layui-card-body" style="padding:20px 0px;width: 100%">
          <table class="layui-hide" id="Distribution" lay-filter="Distribution"></table>
        </div>
      </div>

此处用于定于表格的表头处的按钮

html 复制代码
<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button type="button" class="layui-btn layui-btn-sm" style="background-color: #1E9FFF" id="button1" lay-event="day">今日配送
    </button>
    <button type="button" class="layui-btn layui-btn-normal layui-btn-sm" id="button2" style="background-color: #FFB800"  lay-event="week">本周配送
    </button>
    <button type="button" class="layui-btn layui-btn-normal layui-btn-sm" id="button3"  style="background-color: #FF5722"  lay-event="month">本月配送
    </button>
    <button type="button" class="layui-btn layui-btn-normal layui-btn-sm" id="button4" lay-event="all">查看全部</button>
  </div>
</script>

定义url和参数以及table和表头处的id选择集

toolbar: '#toolbarDemo', 接收表头id

elem: '#Distribution', 接收table的id

复制代码
function loadBottledGasHouse (companyID,distributionPerson,customerName,carNum,distributionType,distributionAddress,startTime,endTime){
  table.render({
    elem: '#Distribution',
    url: 'xxx/xxx',
    toolbar: '#toolbarDemo',
    page: true,
    method: 'post',
    limit: 10,
    limits: [10, 30, 50,100,300,500],
    cellMinWidth: 110,
    where: {"comID": companyID,"distributionPerson": distributionPerson,"customerName": customerName,"carNum": carNum,
      "distributionType": distributionType,"distributionAddress": distributionAddress,"startTime": startTime,"endTime": endTime},
    cols: [[
      {field: 'id', sort: true, title: 'ID', hide: true},
      {field: 'companyName', sort: true, title: '所属公司',  align: "center",width:200},
      {field: 'carNum', sort: true, title: '车牌号',  align: "center",width:120},
      {field: 'customerName', sort: true, title: '客户姓名',  align: "center",width:120},
      {field: 'customerPhone', sort: true, title: '客户电话',  align: "center",width:120},
      {field: 'distributionAddress', sort: true, title: '配送地址',  align: "center",width:150},
      {field: 'distributionType', sort: true, title: '配送方式',  align: "center",width:120,templet : function(d) {
          var distributionType = d.distributionType;
          if(distributionType==1){
             return '整罐换气'
          }
          if(distributionType==2){
            return '自有钢瓶'
          }
          if(distributionType==3){
            return '现场充气'
          }
      }},
      {field: 'inflationVolumeTotal', sort: true, title: '总加气量',  align: "center",width:120},
      {field: 'inflationVolume', sort: true, title: '钢瓶标签/加气量',  align: "center",width:300},
      {field: 'distributionTime', sort: true, title: '配送时间',  align: "center",width:200},
      {field: 'cylinderTotal', sort: true, title: '钢瓶数量',  align: "center",width:120},
      {field: 'distributionPersonName', sort: true, title: '配送人员',  align: "center",width:120},
      {align: 'center', toolbar: '#roleTableBarStreet',  title: '操作', align: "center",fixed:'right',width:200}
    ]],
    done(res){
      console.log(res)
    }
  });
  return false;
}

以下是生成的表格样式和分页效果

下面是后端分页

同样需要将page和limit传入后端并接收

sqlserver和maraDB一样只是业务层和sql不一样

复制代码
@RequestMapping("/url")
public List<AlarmDisposeRecordVO> selectAlarmDisposeRecord(Integer page, Integer limit) {
   return villageManageService.selectAlarmDisposeRecord(page,limit);
}

业务层

sqlserver直接传就行

复制代码
public List<AlarmDisposeRecordVO> selectAlarmDisposeRecord( Integer page, Integer limit) {
   return villageManageMapper.selectAlarmDisposeRecord(page,limit);
}

maraDB则需要计算一下

复制代码
public List<AlarmDisposeRecordVO> selectAlarmDisposeRecord(Integer comId, Integer page, Integer limit, String alarmCause) {
   page = (page-1)*limit; // 修改MariaDB 分页
   return villageManageMapper.selectAlarmDisposeRecord(comId,page,limit,alarmCause);
}

最后是sql的不同

sqlserver

sql 复制代码
select top ${limit} * from (
            SELECT
                ISNULL( CAST ( a.disposeStatus AS VARCHAR ), '--' ) AS disposeStatus,
                COALESCE(CONVERT(VARCHAR(100), a.alarmTime, 120), '--') AS alarmTime,
                ISNULL( CAST ( b.concNumber AS VARCHAR ), '--' ) AS concNumber,
                ISNULL( CAST ( a.alarmValue AS VARCHAR ), '--' ) AS alarmValue,
                ISNULL( CAST ( a.alarmCause AS VARCHAR ), '--' ) AS alarmCause
            FROM
                DKGasRun.dbo.AlarmDis AS a,
                DKGovtGas.dbo.Concentration AS b
            WHERE
                a.equipID = b.ID
                AND b.companyID = #{comId}
                <if test="alarmCause=''||alarmCause!=null">
                    AND a.alarmCause LIKE'%' + #{alarmCause} + '%'
                </if>
        ) n
        where rownumber > ((${page} - 1)*${limit})

maraDB

sql 复制代码
  SELECT
            ISNULL( CAST ( a.disposeStatus AS VARCHAR ), '--' ) AS disposeStatus,
            COALESCE(CONVERT(VARCHAR(100), a.alarmTime, 120), '--') AS alarmTime,
            ISNULL( CAST ( b.concNumber AS VARCHAR ), '--' ) AS concNumber,
            ISNULL( CAST ( a.alarmValue AS VARCHAR ), '--' ) AS alarmValue,
            ISNULL( CAST ( a.alarmCause AS VARCHAR ), '--' ) AS alarmCause
            FROM
             dkgasrun.alarmd AS a,
             dkgovtgas.concentration AS b
            WHERE
            a.equipID = b.ID
            AND b.companyID = #{comId}
            <if test="alarmCause=''||alarmCause!=null">
                AND a.alarmCause LIKE CONCAT('%', #{alarmCause}, '%')
            </if>
             limit #{page},#{limit};
相关推荐
方白羽14 小时前
Android Gradle 缓存与文件目录深度解析
android·gradle·android studio
曲幽18 小时前
Termux里的二进制和脚本,到底怎么运行才不踩坑?Termux-service 保活妙招!
android·termux·nohup·services·wake-lock
plainGeekDev19 小时前
单例模式 → object 声明
android·java·kotlin
程序员陆业聪19 小时前
读者点单·03|Compose 与传统 View 混用的 12 个真实坑
android
程序员陆业聪19 小时前
读者点单·02|Android 启动优化实战:Trace 抓取→Application 编排→冷启动全流程拆解
android
Coffeeee20 小时前
帮你快速理解AI Agent之我想招个Android实习生
android·人工智能·agent
恋猫de小郭21 小时前
苹果 AirPods 协议,Android 也可以使用完整版 AirPods 能力
android·前端·flutter
黄林晴21 小时前
告别无效重建:Gradle 9.6.0 解决 CI 构建缓存失效痛点告别无效重建:Gradle 9.6.0 解决 CI 建筑缓存失效痛点
android·gradle
张风捷特烈1 天前
Flutter 类库大揭秘#01 | path_provider架构与设计
android·flutter
_阿南_1 天前
Android文件读写和分享总结
android