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

  • 相关阅读:
    计数排序【代码】
    快速排序【代码】
    基于最大堆实现最大优先队列
    Spring入门(1)
    AJAX初步理解
    选择器
    Hibernate的映射
    Hibernate配置(2)
    查看mysql的安装路径
    Hibernate入门(1)
  • 原文地址:https://www.cnblogs.com/weizizhe/p/3713363.html
Copyright © 2020-2023  润新知