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=“”的模糊查询,实现查询所有用户,其实在整个实现过程中,没有特别大的难点,难得主要是在于知识上的整合,对于数据结构要有更深层次的理解,充分运用封装性。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步