问题引出:
以前对查询的数据进行排序,多也是这么写:
这导致我们在多个查询语句进行排序时每个语句都要去写,并且排序字段也是固定的,并不具有灵活性,比方说下次我们想通过t.Province排序,那不是都的改,所以我们引出另一种实现方法,下面就让我们来具体看看是怎么实现这个方法的。
首先我们的so在mapper中的映射也要相应的变一下:
我们发现多了一个<include refid="sqlmap.common.Order_By_Clause" />语句。这是什么呢?让我们找到这个文件一探究竟:
我们发现这个Order_By_Clause中多了一个排序的sorts的集合,并且要留意我们这个排序的Field必须要是别名为 t的数据库表哦。
那这个sorts的集合又是什么呢?我们在Util层中找到了这个一个Sort.java类:
这个类是在什么地方使用的呢,我们发现在我们原来的BasePageSO中貌似有它的身影哦:
以此我们在使用继承了该BasePageSO的自己的SO时,我们便有了和其他的排序字段相同的ORDER BY字段,分成排序类型(递增、递减)和排序字段,这样不就更灵活了许多。
同时我们希望这个排序字段是在前台进行设置的,所以我们在前台ActionScript的BasePageSO中也加入了这个sort元素:
当然前台对应的Sort.as也是不可避免的:
我们在前台又是怎么使用的呢?那就看一个示例吧:
这样我们似乎就成功的将这个ORDER BY 从后台搬到了前台,而且实现了排序的灵活性。