• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

mysql - mybatis 查询 统计数据库各个部门男女人数,分组查询,在xml文件接收统计结果

武飞扬头像
2万加速度
帮助1

学新通

如何将“男”,“女”两个字段统计结果映射出来?

解决办法:

导入fastjson依赖

  1.  
    <dependency>
  2.  
    <groupId>com.alibaba</groupId>
  3.  
    <artifactId>fastjson</artifactId>
  4.  
    <version>1.2.60</version>
  5.  
    </dependency>

Dept实体类添加men ,women字段用于接收统计的数据

  1.  
    @Data
  2.  
    @NoArgsConstructor
  3.  
    @AllArgsConstructor
  4.  
    //使用Lombok注解来构建实体类
  5.  
    public class Dept {
  6.  
     
  7.  
    private int did;
  8.  
     
  9.  
    private String dname;
  10.  
     
  11.  
    private String loc;
  12.  
     
  13.  
    private List<Emp> emp;
  14.  
    /** 新建男性性别计数列*/
  15.  
    private int men;
  16.  
    /** 新建女性性别计数列*/
  17.  
    private int women;
  18.  
     
  19.  
     
  20.  
    }
学新通

接口

  1.  
    public interface CountMapper {
  2.  
    /**
  3.  
    * Description: 查询各部门男女人数
  4.  
    * date: 2022/11/22
  5.  
    *
  6.  
    * @param
  7.  
    * @Return Dept 部门信息
  8.  
    * @author: dsdg
  9.  
    * @since JDK 1.8
  10.  
    */
  11.  
    List<Dept> findGender();
  12.  
    }

xml映射文件

  1.  
    <!--resultMap用于查询各部门男女人数-->
  2.  
    <resultMap id="baseMaps" type="com.golop.entity.Dept">
  3.  
    <result column="did" property="did"/>
  4.  
    <result column="dname" property="dname"/>
  5.  
    <result column="loc" property="loc"/>
  6.  
    <!--一下两列用于接收查询各部门男女人数-->
  7.  
    <result column="men" property="men"/>
  8.  
    <result column="women" property="women"/>
  9.  
    </resultMap>
  10.  
     
  11.  
    <!--查询各部门男女人数-->
  12.  
    <select id="findGender" resultMap="baseMaps">
  13.  
    select d.did,
  14.  
    e.dept_id,
  15.  
    sum(case e.gender when '男' then 1 else 0 end) as men,
  16.  
    sum(case e.gender when '女' then 1 else 0 end) as women
  17.  
    from springboot.dept d
  18.  
    left join springboot.emp e
  19.  
    on d.did = e.dept_id
  20.  
    group by e.gender, d.did
  21.  
    </select>
学新通

补充:为了方便理解,就将统计男女人数字段加在Dept是实体类中,其实也可以新建单独的统计性别的实体类。该实体类中的成员可以设计成是sql语句中输出字段d.did,e.dept,men,women中的部分字段或者全部字段。此处的resultMap也其实也可以不加,直接用resultType

controller层

  1.  
    //请求映射地址/save
  2.  
    @GetMapping(value = "/findGender", produces = "text/html;charset=UTF-8")
  3.  
    //请求转发(设置当前操作的返回值字符串)
  4.  
    @ResponseBody
  5.  
    public String savess() {
  6.  
    List<Dept> gender = deptService.findGender();
  7.  
    for (Dept dept : gender) {
  8.  
    System.out.println(dept);
  9.  
    }
  10.  
    //根据需要使用fastjson将结果转换成json格式数据
  11.  
    String s = JSON.toJSONString(gender);
  12.  
    return s;
  13.  
    }

后台结果:

学新通

前台结果:通过fastjson将不需要的值为null的字段过滤

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhfcecg
系列文章
更多 icon
同类精品
更多 icon
继续加载