mybatis中xml的几种查询(分页)

我的习惯 parameterType(输入参数,统一用map,放在map里面)

 
    
    
    
    
    
    
    
    
    
    
  

1.查询有多少条数据count 返回一条一列的int ,resultType为int


2.查询单表 返回一个List 动态slq 分页 resultMap 为自动生成的BaseResultMap

 

3.dao层接口:

   //查总条数 不分页
    int getTotalVarBasicList(Map temMap);

    //分页
    List getVarBasicList(Map temMap);

4.service接口:

//VarBasicQueryVo 里面把分页的参数和要按什么条件查的参数
//统一封装到自己定义的这个对象里
 Map selectByList(VarBasicQueryVo vo);

5.service 实现类:

 @Override
    public Map selectByList(VarBasicQueryVo vo) {
        Map resultMap=new HashMap<>();
        Map temMap=new HashMap<>();
        //把vo里封装的参数放入map中 也可一个个put
        temMap=MapUtils.beanToMap(vo, Constant.LIST_FIELD);
        //查询总条数
        int totalNum=tVarBasicMapper.getTotalVarBasicList(temMap);
        log.info("总条数为:"+totalNum);
        if(totalNum<1) {
            resultMap.put("total", 0);
            resultMap.put("data", null);
            return resultMap;
        }
        String pageIndex = vo.getPage().toString();
        String pageSize = vo.getRows().toString();
        temMap.put("start", 0);
        temMap.put("size", 10);
        if ((!AcStringUtils.isEmpty(pageIndex)) && (!AcStringUtils.isEmpty(pageSize))) {
            int start = ((Integer.parseInt(pageIndex)) - 1) * (Integer.parseInt(pageSize));
            int size = Integer.parseInt(pageSize);
            // int
            // end=((Integer.parseInt(pageIndex)))*(Integer.parseInt(pageSize));
            temMap.put("start", start);
            temMap.put("size", size);
        }
        //分页按条件
        List dataList= tVarBasicMapper.getVarBasicList(temMap);
        resultMap.put("pageIndex", pageIndex);
        resultMap.put("totalPages"
                ,(totalNum % Integer.parseInt(pageSize) > 0
                        ? totalNum / Integer.parseInt(pageSize) + 1
                        :totalNum / Integer.parseInt(pageSize)
                )
        );
        resultMap.put("total", totalNum);
        resultMap.put("data", dataList);
        return resultMap;

    }

6.controller:

/**
     * select all
     *
     * @param vo
     * @return
     */
    @PostMapping("list")
    public Result selectList(@RequestBody @Validated VarBasicQueryVo vo) {
        Map resultMap = null;
        try {
            resultMap = itVarBasicService.selectByList(vo);
        } catch (Exception e) {
            return ResultUtil.error(ResultEnum.SERVER_ERROR, e.getMessage());
        }

        return ResultUtil.success(resultMap);
    }

你可能感兴趣的:(mybatis)