SSH整合之个人博客项目开发--知识点总结

在我的后台管理系统中,为了减省事,我只用了一个页面,但是查看记录上我目前只能使用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;
	}
}

猜你喜欢

转载自blog.csdn.net/lp15203883326/article/details/80337560
今日推荐