SSH整合之個人部落格專案開發--知識點總結
阿新 • • 發佈:2019-02-17
有簡單的資料壓縮,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;
}
}