关于将MyBatis中的ORDER BY语句抽象到base中的考虑

来源:互联网 发布:cs拍照软件下载 编辑:程序博客网 时间:2024/05/03 02:14

问题引出:

                 以前对查询的数据进行排序,多也是这么写:

                

                这导致我们在多个查询语句进行排序时每个语句都要去写,并且排序字段也是固定的,并不具有灵活性,比方说下次我们想通过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 从后台搬到了前台,而且实现了排序的灵活性。

原创粉丝点击