请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

集中问几个问题

 public ServerResponse<PageInfo> getProductByKeywordCategory(String keyword,Integer categoryId,int pageNum,int pageSize,String orderBy){

        if(StringUtils.isBlank(keyword) && categoryId == null){

            return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(),ResponseCode.ILLEGAL_ARGUMENT.getDesc());

        }

        List<Integer> categoryIdList = new ArrayList<Integer>();


        /*

            问题1?如果我在这个地址栏中传入id/kewod同时,

            并且这个keywoed存在,id也是存在的,我就没有找到这个对应的判断条件是哪个,但是我在地址栏试过了

            不行,我就很好奇这是那步起到了这个作用?

        */

        if(categoryId != null){

            Category category = categoryMapper.selectByPrimaryKey(categoryId);

            /*

                问题2?这里为什么还要判断关键字,起到什么作用?是所谓的怕想我问题1那样如果

                传入id不存在传入关键字,可是我试了好像不行为什么啊?

            */

            if(category == null && StringUtils.isBlank(keyword)){

                //没有该分类,并且还没有关键字,这个时候返回一个空的结果集,不报错

                PageHelper.startPage(pageNum,pageSize);

                List<ProductListVo> productListVoList = Lists.newArrayList();

                PageInfo pageInfo = new PageInfo(productListVoList);

                return ServerResponse.createBySuccess(pageInfo);

            }

            categoryIdList = iCategoryService.selectCategoryAndChildrenById(category.getId()).getData();

        }

        //问题3:这个append是干什么?为甚要把keywod放在里面

        if(StringUtils.isNotBlank(keyword)){

            keyword = new StringBuilder().append("%").append(keyword).append("%").toString();

        }


        PageHelper.startPage(pageNum,pageSize);

        //排序处理

        if(StringUtils.isNotBlank(orderBy)){

            if(Const.ProductListOrderBy.PRICE_ASC_DESC.contains(orderBy)){

                //问题4:这一步也不太理解要做什么?

                String[] orderByArray = orderBy.split("_");

                PageHelper.orderBy(orderByArray[0]+" "+orderByArray[1]);

            }

        }

        List<Product> productList = productMapper.selectByNameAndCategoryIds(StringUtils.isBlank(keyword)?null:keyword,categoryIdList.size()==0?null:categoryIdList);


        List<ProductListVo> productListVoList = Lists.newArrayList();

        for(Product product : productList){

            ProductListVo productListVo = assembleProductListVo(product);

            productListVoList.add(productListVo);

        }


        PageInfo pageInfo = new PageInfo(productList);

        pageInfo.setList(productListVoList);

        return ServerResponse.createBySuccess(pageInfo);

    }


正在回答 回答被采纳积分+3

2回答

Geely 2018-03-13 22:42:40

你好,同学,这是业务问题,另外还是要表扬一下 @艾贺521 互相帮助精神可嘉~~而且回答的也蛮ok的,同学稍安勿躁哈。

简单整理一下

问题1:同时输入的话,往下看,首先判断分类,开始拼接sql,如果关键字不为空,也继续拼接。所以这两个条件是可以都命中的

问题2:这个位置不是判断关键字,是判断分类ID,是否存在因为分类id有可能通过拼接传DB里不存在的,所以要做空校验


问题3:append是一个api,拼接字符串所用。整体拼接出来就是一个sql

问题4:动态排序,拼接 order by 所用。


0 回复 有任何疑惑可以回复我~
艾贺521 2018-03-12 17:03:30

都是好基础的问题。

问题1:如果不走if,直接走接下来的逻辑,你说的是没有进入if的。。。

问题2:和问题1差不多,你整理一下逻辑思路。。你的逻辑好像不太清楚

问题3:数据库的模糊查询 %xxx%,%相当于任意多个字符

问题4:通过什么排序,如果排序的内容比较多,就分隔为数组。


能力有限,不过你问的太基础了,不太好回答。


0 回复 有任何疑惑可以回复我~
  • 提问者 慕容0166988 #1
    越基础的东西越难懂,一个面对对象思想刚开始学的时候都感觉会可是时间长了就又觉的不会,你呢,如果你很可以就解决问题,我不是听你教训的,你回答了我的我感谢你,没回答的教育我的话请收起,谢谢
    回复 有任何疑惑可以回复我~ 2018-03-13 17:03:22
  • 提问者 慕容0166988 #2
    你试过我说的情况吗?如果试过请你或者是麻烦你给我讲清楚,这叫本事,才能说明你基础好,要不别站的说话不腰疼,请老师你来给我讲清楚
    回复 有任何疑惑可以回复我~ 2018-03-13 17:17:07
  • Geely 回复 提问者 慕容0166988 #3
    乖乖乖么么头~~回复你了哈。同学也是好心~~
    回复 有任何疑惑可以回复我~ 2018-03-13 22:43:00
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信