MyBatis中如何返回 Map结果集

  1. 使用 @MapKey 指定 map 的 key 值。这里我们自定义一个接口
public interface DemoMapper {
	//返回一条记录的map, 此时 key 就是 列名,值就是对应的值
	Map<String, Object> selectAll(Integer id);

	/**
   * 若此处将 map 中的 key 的类型改为其他类型,不影响 @MapKey 给 map 的 key 赋值
   */
  @MapKey("name") //指定数据库中任意唯一字段作为map的key, 只要能保证唯一性,可以是ID, 也可以是其他字段,比如这里 name 唯一不重复
	Map<String, Map<String, Object>> select();
	
}
  1. 在映射文件XML配置方法
<!-- Map<String,Object> selectAll(Integer id);   -->
    <select id="selectAll" parameterType="Integer" resultType="java.util.Map">
        select id , money from account where id=#{id}
    </select>

<!--  Map<String,Map<String,Object>> select();  -->
    <select id="select" resultType="java.util.Map">
        select id,name,money from account
    </select>

  1. 在Junit方法里进行测试
    @Before
    public void init() throws IOException {
        //1.读取配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        factory=builder.build(in);
        //3.使用工厂生产SqlSession对象
        session= factory.openSession();
    }

    @After
    public void after() throws IOException {
        session.close();
        in.close();
    }   

  1. map 的 value 是一个 java 类时的写法
	@Test
    public void selectTest(){
        IAccountDao mapper = session.getMapper(IAccountDao.class);
        Map<String, Object> map = mapper.selectAll(1);
        System.out.println(map);
    }

在这里插入图片描述
5. map 的 value 是一个 map 类时的写法

 	@Test
    public void selectTest2(){
        IAccountDao mapper = session.getMapper(IAccountDao.class);
        Map<String, Map<String, Object>> map = mapper.select();
        System.out.println(map);
    }

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员良哥

我看你骨骼惊奇,花钱买点知识吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值