1. 程式人生 > >關於將MyBatis中的ORDER BY語句抽象到base中的考慮

關於將MyBatis中的ORDER BY語句抽象到base中的考慮

問題引出:

                 以前對查詢的資料進行排序,多也是這麼寫:

                

                這導致我們在多個查詢語句進行排序時每個語句都要去寫,並且排序欄位也是固定的,並不具有靈活性,比方說下次我們想通過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 從後臺搬到了前臺,而且實現了排序的靈活性。