有简单的数据压缩,jqery和js异步刷新等..
在我的后台管理系统中,为了减省事,我只用了一个页面,但是查看记录上我目前只能使用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)
}
});
});
/** 文章操作_删除
* @returns
*/
function articleDelete(id){
$.ajax({
type:"post",
url:"Blog/blog/article_delete.action",
data:"id="+id,
dataType:"json",
success:function(data){
alert(data.msg);
console.log(data)
},
error:function(jqObj){
console.log(jqObj.status)
alert("Jquery失败哦");
}
});
}
在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;
}
}