編輯:關於Android編程
昨天將框架整合完成,現在我主要實現昨天的需求,實現商品的列表查詢,這時要涉及到jsp和serveilet知識,不清楚的朋友可以趕緊去補充下知識。
分析:因為不能直接訪問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、請求的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”,”李四”}]}
SQL語句:SELECT * from tb_item LIMIT 0,30
這裡因為涉及要分頁,但是Mapper是我們逆向生成的,不好改,所以這裡考慮使用第三方插件來進行分頁,是開源的。
官方網址是:https://github.com/pagehelper/Mybatis-PageHelper/tree/master/src/main/java/com/github/pagehelper
這裡建議大家也可以寫自己的開源項目放到上面。

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

第一步:引入pageHelper的jar包。
第二步:需要在SqlMapConfig.xml中配置插件。

第三步:在查詢的sql語句執行之前,添加一行代碼:PageHelper.startPage(1, 10);
注意:第一個參數是page,要顯示第幾頁,第二個參數是rows,沒頁顯示的記錄數。
第四步:取查詢結果的總數量:創建一個PageInfo類的對象,從對象中取分頁信息。


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、接收分頁參數,一個是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;
}
}
實現查詢結果頁面的跳轉
接收頁面傳遞過來的參數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;
}
}
在啟動taotao-manage時候,會出現一下錯誤

錯誤分析:原因是找不到com.taotao.common.pojo,這是我剛才寫進去在taotao-common工程下的包,因為我沒有將工程同步到本地倉庫下
錯誤解決:點擊maven install,同步工程到本地倉庫。
但是maven intall之後啟動仍然有如下錯誤:

錯誤分析:提示是沒去清除啟動web的日志信息,因為我沒關之前啟動的tomcat,導致日志被鎖定,現在啟動的tomcat當然不能clean日志了
錯誤解決:關閉tomcat,在重新啟動taotao-manager就好。

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

需求實現成功!大家有木有感動
,明天繼續,歡迎關注!希望大家別只看不寫,我也是晚上要花幾小時寫的,不夠詳細或者有問題可以給我留言,盡量及時答復!
Android——滑動屏幕監聽+ Palette獲取圖片中的顏色+Toolbar-ActionBar
Android——滑動屏幕監聽+ Palette獲取圖片中的顏色 滑動屏幕監聽——音量+亮度的調整package
Android事件總線(二)EventBus3.0源碼解析
前言上一篇我們講到了EventBus3.0的用法,這一篇我們來講一下EventBus3.0的源碼以及它的利與弊。1.構造函數當我們要調用EventBus的功能時,比如注冊
Android RecyclerView實現下拉列表功能
現在市面上的很多的應用,都帶有下拉列表的功能,將所有選項都放在下拉列表中,當用戶點擊選擇的時候,彈出所有的選項,用戶選擇一項後,下拉列表自動隱藏,很多下拉列表都是用Lis
Android開發筆記之Android中數據的存儲方式(二)
我們在實際開發中,有的時候需要儲存或者備份比較復雜的數據。這些數據的特點是,內容多、結構大,比如短信備份等。我們知道SharedPreferences和Files(文本文