首页 > 其他分享 ><resultMap >继承 解决 Mybatis 统计类查询需求

<resultMap >继承 解决 Mybatis 统计类查询需求

时间:2022-10-04 10:33:59浏览次数:57  
标签:endDate String 继承 private 查询 fund user Mybatis Param

在使用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>

 

标签:endDate,String,继承,private,查询,fund,user,Mybatis,Param
From: https://www.cnblogs.com/JYB2021/p/16753332.html

相关文章