<select id="selectExportList" resultMap="DemandExportMapper" parameterType="com.xx.model.DemandExportModel">
统计的话,就在接口后面加?sum=true,name sql语句就相当于只执行了一个 select count(1)from biaoming; 分页头,分页尾,都是固定的
如下:
但是目前我依然不知道那个 排序的 sortCol , sortDir ;到底是怎么回事?基本都是别人写好的,自己拿来用就行了。类似的还有 导出excel接口;也是的。都是公司写好的,直接调!我的天呐,难道我就只做CRUD 吗?CRUD 怎么了,自己还不是做的不是很熟!!!!!列表中删除,弹框中列表删除,你上次不是花了2天时间,还问大佬,做出来的吗?真的是被骂的狗血淋头啊!!!
具体排序是什么样子的?请看下面的样例:
第一遍查询列表的时候
不点击列头的时候,默认为行号 倒序。
最后执行的sql为(只看order by 部分):
ORDER BY T.LN_NUM DESC
第二遍查询列表的时候,也就是点击列头的时候,触发接口访问:
传输数据为:
pq_datatype=JSON&pq_curpage=1&pq_rpp=20000&pq_sort=[{“dataIndx”:“chsDesc”,“dir”:“up”}]&rowId=1-23huyg43
最后执行的sql为(只看order by 部分):
ORDER BY T3.X_CHS_DESC,T.LN_NUM
基本就是点击一下, pq_sort=[{“dataIndx”:“chsDesc”,“dir”:“up”}]
对应的列,dir 会在up 和down 之间切换。
<if test="sortCol == 'attention' ">NLSSORT(T.VAL,'NLS_SORT=SCHINESE_PINYIN_M')<if test="sortDir=='down' " >DESC</if>,</if> <!--关注-->
其中 attention 就是 NLSSORT(T.VAL,‘NLS_SORT=SCHINESE_PINYIN_M’) 的映射。
如果前段传了 dataIndx : attention, dir 不是up 就是down ,所以结果就是
ORDER BY 这个很长的字段,T.LN_NUM(默认字段) ----升序(传dir:up)
ORDER BY 这个很长的字段 DESC ,T.LN_NUM DESC(默认字段)----倒序(传dir:down)
然后现在是又来了一个大佬,写的排序,跟上面的排序不一样。他的思路是这样的:我现在不能外内网复制粘贴,虚拟机操作被限制了。所以是手抄,大家将就下就好。
首先是model.你有在model中使用过静态代码块吗?、
package com.xxxxx.model.rebate.settlement;
/*
* 返利结算单
*/
public class SettlementSheetModel extends BaseModel{
//客户信息
private String year; //结算年度
private String task;//任务额
。。。//很多字段,我就不写了
//新建 :model属性与数据库列 映射的Map--propertyColumnMap
private final static Map<String,String> propertyColumnMap = new HashMap<>();
static {
propertyColumnMap.put("createTime","CREATED"); //这个BaseModel中有
propertyColumnMap.put("task","TASK");
propertyColumnMap.put("year","S_YEAR");
。。。
}
//get set 方法,我就不写了,只写特殊的,
//重写父类BaseModel中的方法(关于排序的)
public String getSortDir(){
return "up".equals(super.getSortDir()) ? "ASC" : "DESC" ;
}
public String getSortCol(){
return StringUtils.isNotBlank(super.getSortCol()) ?
propertyColumnMap.get(super.getSortCol()) : propertyColumnMap.get("createTime"); //默认排序字段为 创建时间。
}
}
那么 Mapper.xml中,怎么写的呢?如果以这种方式进行排序的话,请看:
/*就是修改下之前的if test*/
<if test= "sortCol != '' and SortCol != null " >ORDER BY ${sortCol} ${sortDir}</if>
注意,这里Order By 后面的变量,我觉得跟 Group By 是一样的道理,只能是 ${} 来代替变量,不能使用 #{}.
否则会报: 不是Order By 表达式 !,或者 :不是Group By 表达式!