Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 淘淘商城---8.7

淘淘商城---8.7

編輯:關於Android編程

昨天將框架整合完成,現在我主要實現昨天的需求,實現商品的列表查詢,這時要涉及到jsp和serveilet知識,不清楚的朋友可以趕緊去補充下知識。

1、商品列表的實現

1.1、打開後台管理工程頁面

 

分析:因為不能直接訪問WEB-INF下面的資源,所以先寫一個controller進行頁面跳轉展示首頁。並且後台首頁是easyUI開發的。

代碼一

 

package com.taotao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 
  * @ClassName: PageController  
  * @Description: TODO(展示後台管理頁面,頁面跳轉的controller)  
  * @author 汪本成  
  * @date 2016年8月7日 下午8:42:45  
  *
 */

@Controller
public class PageController {
	

	/**
	 * 打開首頁
	 * @return
	 */
	@RequestMapping("/")
	public String showIndex() {
		return "index";
	}
	
	/**
	 * 展示其他頁面
	 * @param page
	 * @return
	 */
	@RequestMapping("/{page}")
	public String showPage(@PathVariable String page) {
		return page;
	}
}

 

1.2、商品列表查詢

這裡需要注意幾點;

1、請求的url:"/item/list",如圖:

\

2、請求的參數;http://localhost:8080/item/list?page=1&rows=30 分頁信息。

\

會出現400的Bad Request提示。

3、返回值是json的格式數據。

 

Easyui中datagrid控件要求的數據格式為:

{total:”2”,rows:[{“id”:”1”,”name”,”張三”},{“id”:”2”,”name”,”李四”}]}

1.3、Dao層

SQL語句:SELECT * from tb_item LIMIT 0,30

這裡因為涉及要分頁,但是Mapper是我們逆向生成的,不好改,所以這裡考慮使用第三方插件來進行分頁,是開源的。

1.3.1、PageHelper

官方網址是:https://github.com/pagehelper/Mybatis-PageHelper/tree/master/src/main/java/com/github/pagehelper

這裡建議大家也可以寫自己的開源項目放到上面。

1.3.2、PageHelper實現原理

\

 

maven將其引入工程中,如圖:

\

 

1.3.3、PageHelper使用方法

 

第一步:引入pageHelper的jar包。

第二步:需要在SqlMapConfig.xml中配置插件。

\




	
	
		
			        
        	
		
	

第三步:在查詢的sql語句執行之前,添加一行代碼:PageHelper.startPage(1, 10);

注意:第一個參數是page,要顯示第幾頁,第二個參數是rows,沒頁顯示的記錄數。

第四步:取查詢結果的總數量:創建一個PageInfo類的對象,從對象中取分頁信息。

1.3.4、分頁測試

\

 

\

 

代碼二

 

package com.taotao.controller;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.taotao.mapper.TbItemMapper;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemExample;

/**
 * 
  * @ClassName: TestPageHelper  
  * @Description: TODO(測試PageHelper)  
  * @author 汪本成  
  * @date 2016年8月7日 下午10:07:00  
  *
 */
public class TestPageHelper {
	
	@Test
	public void testPageHelper() {
		
		//創建一個spring容器
		ApplicationContext applicationContext = new 
				ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
		
		//從spring容器中獲得Mapper的代理對象
		TbItemMapper mapper = applicationContext.getBean(TbItemMapper.class);

		//執行查詢並分頁
		TbItemExample example = new TbItemExample();
		
		//分頁處理
		PageHelper.startPage(2, 10);
		List list = mapper.selectByExample(example);
		
		//取得商品列表
		for (TbItem tbItem : list) {
			System.out.println(tbItem.getTitle());
		}
		
		//取得分頁信息
		PageInfo pageInfo = new PageInfo<>(list);
		
		//獲取所有商品
		long total = pageInfo.getTotal();
		System.out.println("共有商品: " + total);
	}

}

測試結果如下:

 

\

 

於是Dao可以實現逆向工程生成的mapper文件+PageHelper實現。

 

1.4、Service層

 

 

1、接收分頁參數,一個是page一個是rows。調用dao查詢商品列表。並分頁。返回商品列表。

2、返回一個EasyUIDateGrid支持的數據格式。需要創建一個Pojo。此pojo應該放到taotao-common工程中。

\

代碼三

 

package com.taotao.common.pojo;

import java.util.List;

/**
 * 
  * @ClassName: EUDataGridResult  
  * @Description: TODO(javaBean,方便提供其他工程使用EasyUI)  
  * @author 汪本成  
  * @date 2016年8月7日 下午10:18:00  
  *
 */
public class EUDataGridResult {
	
	private long total;
	private List rows;
	public long getTotal() {
		return total;
	}
	public void setTotal(long total) {
		this.total = total;
	}
	public List getRows() {
		return rows;
	}
	public void setRows(List rows) {
		this.rows = rows;
	}
	

}

 

 

 

寫好之後在去service層實現接口,編輯itemService接口

代碼四

package com.taotao.service;

import com.taotao.common.pojo.EUDataGridResult;
import com.taotao.pojo.TbItem;

/**
 * 
  * @ClassName: ItemService  
  * @Description: TODO(商品管理的itemService接口)  
  * @author 汪本成  
  * @date 2016年8月6日 下午10:31:12  
  *
 */
public interface ItemService {
	
	TbItem getItemById(long itemId);
	
	EUDataGridResult getItemList(int page, int rows);

}

代碼五

實現ItemService接口,添加商品查詢

 

package com.taotao.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.taotao.common.pojo.EUDataGridResult;
import com.taotao.mapper.TbItemMapper;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemExample;
import com.taotao.pojo.TbItemExample.Criteria;
import com.taotao.service.ItemService;

/**
 * 
  * @ClassName: ItemServiceImpl  
  * @Description: TODO(商品管理的ItemService)  
  * @author 汪本成  
  * @date 2016年8月6日 下午10:30:28  
  * @version 1.0
 */


@Service
public class ItemServiceImpl implements ItemService {
	
	@Autowired
	private TbItemMapper itemMapper;

	@Override
	public TbItem getItemById(long itemId) {
		// TODO Auto-generated method stub
		
		/**
		 * 1、根據主鍵查詢
		 *
		//TbItem item = itemMapper.selectByPrimaryKey(itemId);
		
		/**
		 * 2、根據條件進行查詢
		 */
		//添加查詢條件
		TbItemExample example = new TbItemExample();
		Criteria criteria = example.createCriteria();
		criteria.andIdEqualTo(itemId);
		
		//返回查詢結果到List中
		List list = itemMapper.selectByExample(example);
		
		//進行判斷
		if(null != list && list.size() > 0) {
			TbItem item = list.get(0);
			return item;
		}
		return null;
	
	}

	/**
	 * 商品列表查詢
	 */
	@Override
	public EUDataGridResult getItemList(int page, int rows) {
		//查詢商品列表
		TbItemExample example = new TbItemExample();
		
		//分頁處理
		PageHelper.startPage(page, rows);
		
		//取出商品列表
		List list = itemMapper.selectByExample(example);
		
		//創建一個返回值對象
		EUDataGridResult result = new EUDataGridResult();
		result.setRows(list);
		
		//取出商品記錄總條數
		PageInfo pageInfo = new PageInfo<>(list);
		result.setTotal(pageInfo.getTotal());
		
		return result;
	}

}

 

1.5、Controller

實現查詢結果頁面的跳轉

 

接收頁面傳遞過來的參數page、rows。返回json格式的數據。EUDataGridResult

需要使用到@ResponseBody注解。

代碼六

 

package com.taotao.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.taotao.common.pojo.EUDataGridResult;
import com.taotao.pojo.TbItem;
import com.taotao.service.ItemService;

/**
 * 
  * @ClassName: ItemController  
  * @Description: TODO(調用ItemService查詢商品信息)  
  * @author 汪本成  
  * @date 2016年8月6日 下午10:49:53  
  *
 */

@Controller
public class ItemController {

	@Autowired
	private ItemService itemService;
	
	@RequestMapping("/item/{itemId}")
	@ResponseBody
	public TbItem getItemById(@PathVariable Long itemId) {
		TbItem tbItem = itemService.getItemById(itemId);
		return tbItem;
	}
	
	@RequestMapping("/item/list")
	@ResponseBody
	public EUDataGridResult getItemList(Integer page, Integer rows) {
		
		EUDataGridResult result = itemService.getItemList(page, rows);
		return result;
	}
}

 

1.6、錯誤處理

在啟動taotao-manage時候,會出現一下錯誤

\

錯誤分析:原因是找不到com.taotao.common.pojo,這是我剛才寫進去在taotao-common工程下的包,因為我沒有將工程同步到本地倉庫下

錯誤解決:點擊maven install,同步工程到本地倉庫。

但是maven intall之後啟動仍然有如下錯誤:

\

錯誤分析:提示是沒去清除啟動web的日志信息,因為我沒關之前啟動的tomcat,導致日志被鎖定,現在啟動的tomcat當然不能clean日志了

錯誤解決:關閉tomcat,在重新啟動taotao-manager就好。

 

\

啟動成功後在刷新浏覽器,結果如下:

\

需求實現成功!大家有木有感動大笑,明天繼續,歡迎關注!希望大家別只看不寫,我也是晚上要花幾小時寫的,不夠詳細或者有問題可以給我留言,盡量及時答復!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved