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=“”的模糊查询,实现查询所有用户,其实在整个实现过程中,没有特别大的难点,难得主要是在于知识上的整合,对于数据结构要有更深层次的理解,充分运用封装性。

原文地址:https://www.cnblogs.com/weizizhe/p/3713363.html