Pārlūkot izejas kodu

收藏的顺序,最新在最前面

詹子聪 5 gadi atpakaļ
vecāks
revīzija
b19eaf374e

+ 7 - 5
src/main/java/com/miekir/shibei/controller/api/FavController.java

@@ -114,7 +114,7 @@ public class FavController {
 
         String email = header.getFirst("email");
         // 原生查询出来是List<BigInteger>,要转换成List<Long>才行,或者使用JPQL
-        List<BigInteger> goodsIdList = favRepository.getFavList(email, pageNum*pageSize, pageSize);
+        /*List<BigInteger> goodsIdList = favRepository.getFavList(email, pageNum*pageSize, pageSize);
         List<Long> realGoodsIdList = new ArrayList<Long>();
         if (goodsIdList != null && goodsIdList.size() >0) {
             for (BigInteger integer : goodsIdList) {
@@ -125,15 +125,17 @@ public class FavController {
             responseResult.setCode(ResultCode.SUCCESS);
             responseResult.setMessage("没有更多数据");
             return JSON.toJSONString(responseResult);
-        }
-        Iterable<GoodsBean> favGoodsIterator = goodsRepository.findAll(realGoodsIdList);
-        List<GoodsBean> goodsBeanList = new ArrayList<GoodsBean>();
+        }*/
+        //Iterable<GoodsBean> favGoodsIterator = goodsRepository.findAll(realGoodsIdList);
+        /*List<GoodsBean> goodsBeanList = new ArrayList<GoodsBean>();
         if (favGoodsIterator != null) {
             for (GoodsBean currentBean : favGoodsIterator) {
                 currentBean.isFavorite = true;
                 goodsBeanList.add(currentBean);
             }
-        }
+        }*/
+        // 保持原生顺序。使用jpa的findAll总是会自动排序
+        List<GoodsBean> goodsBeanList = goodsRepository.findByIdsIn(email, pageNum*pageSize, pageSize);
         responseResult.setContent(goodsBeanList);
 
         responseResult.setCode(ResultCode.SUCCESS);

+ 6 - 1
src/main/java/com/miekir/shibei/repository/GoodsRepository.java

@@ -24,9 +24,14 @@ public interface GoodsRepository extends JpaRepository<GoodsBean, Long> {
     public GoodsBean findGoodsById(@Param("id") Long id);
 
     // 使用原生SQL MYSQL 不支持TOP,要用连接符号|连接,否则会被当成字符串常量拼成%?1%
-    @Query(value="SELECT * FROM t_goods where title like ?1 limit ?2, ?3", nativeQuery = true)
+    @Query(value="SELECT * FROM t_goods where title like ?1 ORDER BY id DESC limit ?2, ?3", nativeQuery = true)
     public List<GoodsBean> getGoodsListByKeyword(String keywords, int startNum, int pageSize);
 
+    // 这个版本的MySQL不行
+    //@Query(value="SELECT * FROM t_goods where id IN(SELECT goodsId FROM t_fav where email = ?1 ORDER BY id DESC limit ?2, ?3)", nativeQuery = true)
+    @Query(value="SELECT * FROM t_goods where id IN (SELECT t.goodsId from (SELECT * FROM t_fav where email = ?1 ORDER BY id DESC limit ?2, ?3) as t)", nativeQuery = true)
+    List<GoodsBean> findByIdsIn(String email, int startNum, int pageSize);
+
 //    @Override
 //    List<GoodsBean> findAll();