編輯:關於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); Listlist = 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中 Listlist = 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獲取圖片中的顏色 滑動屏幕監聽——音量+亮度的調整package
前言上一篇我們講到了EventBus3.0的用法,這一篇我們來講一下EventBus3.0的源碼以及它的利與弊。1.構造函數當我們要調用EventBus的功能時,比如注冊
現在市面上的很多的應用,都帶有下拉列表的功能,將所有選項都放在下拉列表中,當用戶點擊選擇的時候,彈出所有的選項,用戶選擇一項後,下拉列表自動隱藏,很多下拉列表都是用Lis
我們在實際開發中,有的時候需要儲存或者備份比較復雜的數據。這些數據的特點是,內容多、結構大,比如短信備份等。我們知道SharedPreferences和Files(文本文