JavaWeb26.3【綜合案例:旅遊線路的分頁展示】
阿新 • • 發佈:2021-07-12
點選了不同的分類後,將來看到的旅遊線路不一樣的。通過分析資料庫表結構,發現,旅遊線路表和分類表時一個多對一的關係
查詢不同分類的旅遊線路sql
Select * from tab_route where cid = ?;
類別id的傳遞
CategoryServiceImpl-findAll()改寫
1 @Override 2 public List<Category> findAll() { 3 //1 從redis中查詢 4 //1.1 獲取jedis客戶端 5 Jedis jedis = JedisUtil.getJedis();View Code6 //1.2 期望資料中儲存的順序就是將來展示的順序,使用redis的sortedset 7 // Set<String> categorys = jedis.zrange("category", 0, -1); 8 //1.3 查詢sortedset中的分數(cid)和值(cname) 9 Set<Tuple> categorys = jedis.zrangeWithScores("category", 0, -1); 10 /* 11 Tuple類內含兩個成員變數 12 private byte[] element;13 private Double score; 14 */ 15 16 //2 判斷查詢結果集合是否為空 17 List<Category> cs = null; 18 if (categorys==null || categorys.size()==0){ 19 // System.out.println("從mysql資料庫中查詢"); 20 21 //3 若為空,則需要從資料庫查詢,並將結果資料存入redis 22 //3.1 從資料庫查詢23 cs = categoryDao.findAll(); 24 //3.2 將集合資料儲存到redis中的 category的key 25 for (int i=0; i<cs.size(); i++){ 26 jedis.zadd("category", cs.get(i).getCid(), cs.get(i).getCname()); //鍵名,分數,鍵值 27 } 28 }else { 29 // System.out.println("從redis快取中查詢"); 30 31 //4 若不為空,直接返回redis快取結果 32 //因為查詢出來的是set集合,而返回結果為list集合,故將set資料存入list(轉換) 33 cs = new ArrayList<>(); 34 /*for (String name : categorys) { 35 Category category = new Category(); 36 category.setCname(name); 37 cs.add(category); 38 }*/ 39 for (Tuple tuple : categorys) { 40 Category category = new Category(); 41 category.setCname(tuple.getElement()); 42 category.setCid((int)tuple.getScore()); 43 cs.add(category); 44 } 45 } 46 47 // return categoryDao.findAll(); 48 return cs; 49 }
根據id查詢不同類別的旅遊線路資料(含分頁)