公司大佬代码,学习一下。列表分页,搜索,排序,统计等

6 篇文章 0 订阅
6 篇文章 0 订阅
<select id="selectExportList" resultMap="DemandExportMapper" parameterType="com.xx.model.DemandExportModel">

查询列表有很多技巧在里面,大佬写的,不是我写的。分页头,以及统计。在这里插入图片描述和上面的是一起的,这是搜索功能排序功能,放在sum后面,可以优化。就是做统计的时候借口后面加?sum=true,就不走排序了。提高性能分页的尾巴,以及默认排序
统计的话,就在接口后面加?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 表达式!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值