在我的后台管理系统中,为了减省事,我只用了一个页面,但是查看记录上我目前只能使用ajax异步刷新发送一个请求,获取一个json对象,然后遍历json对象获取到我需要的
/** * 文章操作 * author:盼盼 * @returns */ $("#articleOperation").click(function(){ $.ajax({ type:"post", url:"Blog/blog/article_findAllArticle.action", dataType:"json", success:function(data){ console.log(data) $("#acticleOperation_tbody").html(" "); $.each(data,function(key,value){ var prebody=$("#acticleOperation_tbody").html(); $("#acticleOperation_tbody").html(prebody+'<tr>' +'<td><input type="checkbox" /></td>' +'<td>'+value.id+'</td>' +'<td><a href="#">'+value.title+'</a></td>' +'<td>'+value.joinTime+'</td>' +'<td>' +' <div class="am-btn-toolbar">' +' <div class="am-btn-group am-btn-group-xs">' +' <button ' +' class="am-btn am-btn-default am-btn-xs am-text-secondary">' +' <span class="am-icon-pencil-square-o"></span> 编辑' +' </button>' +' <button class="am-btn am-btn-default am-btn-xs">' +' <span class="am-icon-copy"></span> 复制' +' </button>' +' <button onclick="articleDelete('+value.id+')" ' +' class="am-btn am-btn-default am-btn-xs am-text-danger" >' +' <span class="am-icon-trash-o"></span> 删除' +' </button>' +' </div>' +' </div>' +'</td>' +'</tr>'); }) }, error:function(jqObj){ console.log(jqObj.status) } }); });
在basedao我新添了一个执行原生sql语句的方法:
因为在项目开发过程中,我发现hibernate不能满足我对数据进行特殊操作例如在字符串分割,我只获取部分数据,或为了更简便的获取部分列的数据
/** * 原生sql */ public List queryBySql(String sql) { List<Object[]> list = getCurrentSession().createSQLQuery(sql).list(); return list; }
在获取了一个list<object[]>对象数组后,再自己将这个对象数组进行封装为自己需要的list数组就可以供我们简单地使用了。
在我的项目中,我用在首页展示博客内容,只从数据库中读取前80个字符,当你点击查看详情时,在显示全部数据。
我将我获取到的list对象数组转换成为我需要的泛型
/*** * 按照时间排序的最新前四个博客并用hql只读取两列数据 */ @Override public List findNewArticle() { //String hql=" FROM Article ORDER BY joinTime DESC "; String sql="SELECT id,title,LEFT(content,80) FROM t_article ORDER BY joinTime DESC LIMIT 0,4"; //List<Article> list =baseDao.find(hql, new Object[] {}, 1, 4); List<Object[]> list=baseDao.queryBySql(sql); List<Article> artileList = new ArrayList<Article>(); for(Object[] obj:list) { Article a = new Article(); a.setId((int)obj[0]); a.setTitle((String)obj[1]); a.setContent((String)obj[2]); artileList.add(a); } return artileList; }
然后还有一个就是分页功能,我放在了util包内
分页:是展示一共有多少个<li>标签主要用于前台的页面展示返回一个字符串
package com.util; public class PageSplit { public String pageSplit(String URL,PageBean page) { String str=""; int countpage; //得出countpage if(page.getTotalSize()%page.getPageSize()!=0) { countpage=page.getTotalSize()/page.getPageSize()+1; }else { countpage=page.getTotalSize()/page.getPageSize(); } if(page.getNowPage()<0) { page.setNowPage(1); } if(page.getNowPage()>countpage) { page.setNowPage(countpage); } if(page.getNowPage()<=0) { str="<li class='disabled' ><a href="+URL+1+">«</a></li>"; }else { str="<li ><a href="+URL+(page.getNowPage()-1)+">«</a></li>"; } for(int i=1;i<=countpage;i++) { str+="<li ><a href="+URL+i+">"+i+"</a></li>"; } if(page.getNowPage()>=countpage) { str+="<li class='disabled'><a href='#'>»</a></li>"; }else { str+="<li><a href="+URL+(page.getNowPage()+1)+">»</a></li>"; } return str; } /** * 样式二 */ public String pageSplit2(String URL,PageBean page) { String str=""; int countpage; //得出countpage if(page.getTotalSize()%page.getPageSize()!=0) { countpage=page.getTotalSize()/page.getPageSize()+1; }else { countpage=page.getTotalSize()/page.getPageSize(); } if(page.getNowPage()<0) { page.setNowPage(1); } if(page.getNowPage()>countpage) { page.setNowPage(countpage); } if(page.getNowPage()<=0) { str="<div class='disabled nav-previous' ><a href='#'>← 上一页</a></div>"; }else { str="<div class='nav-previous'><a href="+URL+(page.getNowPage()-1)+">← 上一页</a></div>"; } if(page.getNowPage()>=countpage) { str+="<div class='disabled nav-next' ><a href='#'>下一页 →</a></div>"; }else { str+="<div class='nav-next'><a href="+URL+(page.getNowPage()+1)+">下一页 →</a></div>"; } return str; } }