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);
    }

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐