SpringMVC+easyUI中datagrid_查詢實現_2014.5.7


一.概括

  本文主要運用springMVC+spring3.0+hibernate4+easyui來實現對datagrid的動態查詢。還是要從設計上說起,首先按我個人的理解,還是先完成后台的編寫,然后前台隨便貼一貼搞一搞就出來,后台首先考慮我查詢過后的數據還是要通過datagrid來體現,所以,只能在Controller上多加幾個參數,將添入的數據傳遞到后台,當然還是要從dao層開始,使用hibernate的模糊查詢,其實還是sql的基礎,再加上一些占位符就可以搞定了。上圖:

二.實現

  2.1Dao層,這里主要的是占位符的運用,在hql上使用:name表示占位符,然后使用query.setParamerters    來將name添上。

1 public List<User> findBlur(int page, int rows, User u) {
2         String hql = "from User u where u.userName like :name and u.age like :age";
3         Query query = this.sessionFactory.getCurrentSession().createQuery(hql);
4         query.setParameter("name","%"+u.getUserName()+"%");
      //通過占位符,將%添加進去,實現模糊查詢
5 query.setParameter("age","%"+u.getAge()+"%"); 6 7 return query.setFirstResult((page-1) * rows).setMaxResults(rows).list(); 8 }

    2.2    userManager。這里沒什么,只是調用dao罷了

1     public List<User> findBlue(int page, int rows, User u) {
2         return userDao.findBlur(page, rows, u);
3     }

   2.3  Controller。這里主要是傳入的參數較多,因為也要實現分頁,過濾等復合功能,所以返回的時候就自己定義了一個pojo DataGrid類,最開始在實現的時候,發現點擊查詢后datagrid中才會有數據,但是在初始化的時候是沒有數據的。后來發現原來是前台傳值得時候name沒有初始化,是null,所以導致了這個問題。

 

 1     @RequestMapping("/findBlur")
 2     @ResponseBody
 3     public DataGrid findBlur(int page , int rows , User u){
 4         System.out.println(u.getId()+"****"+u.getUserName()+"***"+u.getAge());
 5          //對傳遞過來的username和age進行一下處理,若都為NULL,則賦值“”
       if(u.getUserName()==null && u.getAge()==null ){ 6 System.out.println("姓名年齡都為空"); 7 u.setUserName(""); 8 u.setAge(""); 9 } 10 //這里主要是對Datagrid進行初始化,因為前台需要的total和rows[]兩項 11 DataGrid dg = new DataGrid(); 12 List list = userManager.findBlue(page, rows, u); 13 Long total = userManager.getCountUsers(); 14 dg.setTotal(total); 15 dg.setRows(list); 16 return dg; 17 }
 1 public class DataGrid {
 2     
 3     private long total = 0L;
 4     private List rows = new ArrayList();
 5     public long getTotal() {
 6         return total;
 7     }
 8     public void setTotal(long total) {
 9         this.total = total;
10     }
11     public List getRows() {
12         return rows;
13     }
14     public void setRows(List rows) {
15         this.rows = rows;
16     }
17             
18 }

2.4 前台。datagrid中主要用到了load方法,這個方法可以直接向后台傳遞參數,然后再就是清空和查詢的按鈕功  能實現

 1     //查詢功能實現
 2     onBtnSearch = function(){
 3         var name = $('#Sname').val();
 4         var age = $('#Sage').val();
 5         $('#datagrid').datagrid('load',{
 6             userName: name,
 7             age: age
 8         });
 9     };
10     //清除按鈕的功能
11     clearBtnData = function(){
12         $('#Sname').val('');
13         $('#Sage').val('');
14         $('#datagrid').datagrid('load',{
15             userName: "",
16             age: ""
17         });
18     };

下面是兩個linkbutton

1 <td><a href="javascript:void(0);" class="easyui-linkbutton" onclick="onBtnSearch()">查詢</a></td>
2 <td><a href="javascript:void(0);" class="easyui-linkbutton" onclick="clearBtnData()">清空</a></td>

三.總結

  歲月易老青春不再,清空不只是清空輸入框的數據,同時向后台傳遞name=“”,age=“”的模糊查詢,實現查詢所有用戶,其實在整個實現過程中,沒有特別大的難點,難得主要是在於知識上的整合,對於數據結構要有更深層次的理解,充分運用封裝性。

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM