zoukankan      html  css  js  c++  java
  • <resultMap >继承 解决Mybatis统计类查询需求

    在使用Mybatis过程中,有需要通过SQL直接计数或求和的需求,需要自定义<resultMap>,而这些<resultMap>往往会与数据库映射直接生成的<resultMap>有关联,会用到 resultMap 继承,这里简单演示一下:

    mapper定义如下:

    //查询时间段内用户列表
    List<User> selectUserList(@Param("beginDate") String beginDate, @Param("endDate") String endDate);
    //按机构统计时间段内用户数量,资产和
    List<UserSum> selectUserSum(@Param("beginDate") String beginDate, @Param("endDate") String endDate);

    关联到的两个实体,User作为基本类,属性和数据库中的user表字段一一对应,UserSum作为查询统计类,其数据依赖于查询user返回统计所得。

    public class User{
    private String incrId;
    private String fund;//机构 private String idNo;//身份证号 private BigDecimal balance;//资产 private Date date;//时间 ··· } public class UserSum extends User{ //private String fund;//机构 private Integer userNum;//用户数 private BigDecimal balanceSum;//资产和 ··· }

    对应的mapper.xml如下:

     <!-- User返回对象的映射,元素与数据库字段相对应 -->   
    <resultMap id="userMap" type="com.po.User">
           <id property="incrId" column="incr_id"/>
            <result property="fund" column="fund"/>
            <result property="idNo" column="id_no"/>
            <result property="balance" column="balance"/>
            <result property="date" column="date"/>    
    ···
    </resultMap>
    
    <!-- 自定义返回集,继承于userMap,拓展字段可以不和数据库一一对应 -->
        <resultMap id="userSumMap" extends="userMap" type="com.po.UserSum">
            <result property="userNum" column="user_num" jdbcType="INTEGER"/>
            <result property="balanceSum" column="balance_sum" jdbcType="NUMERIC"/>
    ···
    </resultMap>
    
    <select id="selectUserList" resultMap="userMap">
            select incr_id,fund,id_no,balance,date from user where date between ···
    </select>
    
    
    <select id="selectUserSum" resultMap="userSumMap">
            select fund,count(distinct(id_no)) as user_num,ifnull(sum(balance),0) as balance_sum from user where date between ···  group by fund
    </select>

    如上,统计类中的属性按照Mybatis的mapper规定作好Bean与xml的映射即可。

  • 相关阅读:
    java 数字补齐0
    Ubuntu 12.04中文输入法的安装
    mac 更改word的默认显示比例为125
    接口测试的简介
    接口测试和功能测试的区别
    session、token、cookie的区别
    python接口自动化--get请求
    测试用例之正交排列法
    编写测试用例的方法
    jquery选择器
  • 原文地址:https://www.cnblogs.com/zjfjava/p/14110847.html
Copyright © 2011-2022 走看看