<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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!