项目场景:
前端是leyui后端sqlserver和maraDB进行分页,两种数据库在后端分页的不同写法
解决方案:
前端:
定义table,表格的格式在接口返回时进行创建,根据id进行绑定
<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>
此处用于定于表格的表头处的按钮
<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
以下是生成的表格样式和分页效果
下面是后端分页
同样需要将page和limit传入后端并接收
sqlserver和maraDB一样只是业务层和sql不一样
业务层
sqlserver直接传就行
maraDB则需要计算一下
最后是sql的不同
sqlserver
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
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};