Mybatis 如何返回Map集合

在Mybatis中,通常查询结果会被映射为List形式,但有时需要将数据映射到HashMap中,通过主键作为键。在DAO层,使用@MapKey("Stock_Code")注解并配合Mapper.xml配置,可以实现根据"Stock_Code"字段将查询结果转换为HashMap。配置包括在Mapper接口中定义方法和在Mapper.xml文件中设置resultMap,从而将数据库查询结果以Map方式返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      相信很多使用Mybatis的人都经常使用数据库查询批量数据,然后通过ORM映射到内存当中,一般情况下,Mybatis通过List形式来返回数据,但是有些特殊场景,大家希望返回来的集合通过主键的方式来映射到一个特定HashMap当中,通过研究,我发现通过如下当时可以达到映射效益:

DAO层对象:

 package ems.rm.margindataproxy;
import java.util.HashMap;
import org.apache.ibatis.annotations.MapKey;

import ems.rm.margindataproxy.MarginData;


public interface DataMapper {
@MapKey("Stock_Code")
HashMap<String,MarginData> getAllMarginData();
}

Mapper.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="ems.rm.margindataproxy.DataMapper" >
<resultMap  id="marginDataList" type="ems.rm.margindataproxy.MarginData">
         <result column="Stock_Code" property="Stock_Code" jdbcType="VARCHAR"/>
         <result column="Margin_Ratio" property="Margin_Ratio" jdbcType="FLOAT"/>
         <!-->result column="Margin_Level" property="Margin_Level" jdbcType="FLOAT"/ -->
    </resultMap >
    
    <select id="getAllMarginData" resultMap="marginDataList">
select distinct a.stock_code, a.margin_ratio  from  hs_secuhk.marginratio a inner join  hs_secuhk.nstkcode b on(a.STOCK_CODE =b.STOCK_CODE and b.Margin_Flag='Y' and a.EXCHANGE_TYPE ='K')
    </select>
</mapper>

其实注解@MapKey("主键")即可以轻松的完成Map对象的映射。




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值