查询条件的方式,前端传参给后端控制层接收

  • 查询条件存储:const queryData = ref({wellnames: [], sfsk: ''});

  • xxxApi.js 中请求方法

    pageData(query, currentPage, pageSize, successCallBack, errorCallBack) {
      const url = cjjscgService + "/pageYsDaa05";
      axiosUtil.get(`${url}?page=${currentPage}&rows=${pageSize}`,{
        ...query
      }, function (res) {
        if (typeof successCallBack == "function") {
          successCallBack(res);
        }
      }, errorCallBack)
    },
    

前端现场拼接,后端 map 获取

  • 前端

    xxxApi.pageData({wellnames: queryData.value.wellnames.join(','), sfsk: queryData.value.sfsk}, currentPage.value, pageSize.value, function (res){ 成功操作 }, ()=>{ 失败错误 })
    
    • 用于将数组的所有元素连接成一个字符串,使用逗号作为分隔符
  • 后端

    public JsonMessage<DataPaging<Map>> xxx(@RequestParam Map argsMap, @RequestParam(value = "page", defaultValue = "1")int page, @RequestParam (value = "rows", defaultValue = "10")int rows){
      return new JsonMessage().success(yyyService.getYyyList(argsMap,page,rows));
    }
    
    • yyySerivce.java

      public DataPaging<Map> getYyyList(Map argsMap, int page, int rows) {
        List<String> list = new ArrayList<>();
        if(argsMap.get("wellnames") != null){ // 判断取出
          list = Arrays.asList(argsMap.get("wellnames").toString().split(","));
        }
        argsMap.put("jhIds",list);
        PageRequest pageRequest = new PageRequest(page, rows, argsMap);
        return mybatisRepository.selectPaging(NAMESPACE + ".getYyyList", pageRequest);
      }
      
      • 这里因为初始化时 wellnames 为 [],所以通过 .join 后获取的是一个空字符串,由于 argsMap.get("wellnames") 不是 null(而是一个空字符串),list 将被初始化为一个包含一个空字符串的列表 [""],所以经过下面的 xml 后查询的是空(除非真有 JH 为空字符串的数据)
    • yyyMapper.xml

      <if test="jhIds.size() > 0">
        and JH in
        <foreach item="jh" index="index" collection="jhIds" open="(" close=")" separator=",">
          #{jh}
        </foreach>
      </if>
      

前端放一起,后端实体类接收

  • 前端

    xxxApi.pageData(queryData.value, currentPage.value, pageSize.value, function (res){ 成功操作 }, ()=>{ 失败错误 })
    
  • 后端

    public JsonMessage<DataPaging<查询获取的实体类>> xxx(pageParam param, @RequestParam (value = "page", defaultValue = "1")int page, @RequestParam (value = "rows", defaultValue = "10")int rows) {
      return new JsonMessage().success(yyyService.getYyyList(param, page, rows));
    }
    
    • 这里的 pageParam 实体类里就存着查询条件属性,包括 private List<String> wellnames;

    • yyyService.java

      public DataPaging<查询获取的实体类> getYyyList(WellListPageParam param, int page, int rows) {
        if (param.getWellnames() == null) {
          param.setWellnames(Collections.singletonList(""));
        }
        PageRequest pageRequest = new PageRequest(page, rows, param);
        DataPaging<查询获取的实体类> goodsDataPaging = mybatisRepository.selectPaging(NAMESPACE + ".getYyyList", pageRequest);
        return goodsDataPaging;
      }
      
      • 这里 null 的时候加个空字符串,就和上述第一种方法一样 sql 会添加上 and jh in
    • yyyMapper.xml

      <if test="wellnames.size() > 0">
        and jh in
        <foreach collection="wellnames" item="item" open="(" separator="," close=")">
          #{item}
        </foreach>
      </if>
      
posted @ 2024-02-21 23:54  朱呀朱~  阅读(63)  评论(0编辑  收藏  举报