服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Mybatis返回Map数据方式示例

Mybatis返回Map数据方式示例

2023-02-16 14:18fengyehongWorld Java教程

这篇文章主要为大家介绍了Mybatis返回Map数据方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一. 方式1

接口

public interface UserMapper {

  List<Map<String, String>> selectTestData1();
}
<?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="xxx.mapper.UserMapper">

  <select id="selectTestData1" resultType="java.util.Map">
      SELECT
        t_user.id as id,
	      t_user.email as email,
	      t_user.avatar as avatar
      FROM
	      t_user
  </select>
</mapper>

调用

@Service
public class MapTest implements CommandLineRunner {

  @Autowired
  private UserMapper mapper;

  @Override
  public void run(String... args) throws Exception {

      List<Map<String, String>> listData1 = mapper.selectTestData1();
      for (Map<String, String> map : listData1) {
          System.out.println(map);
      }
  }
}

Mybatis返回Map数据方式示例

 

二. 方式2

接口

import org.apache.ibatis.annotations.MapKey;

public interface UserMapper {

  // 指定的key必须是唯一的,否则重复的重复map的key会覆盖,如果查询的字段中没有唯一值,可以通过rowno来指定
  @MapKey("rowno")
  Map<String, Map<String,String>> selectTestData2();
}
<?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="xxx.mapper.UserMapper">
	<!--
		由于mysql没有oracle中的ROWNUM功能,因此只能通过下面的方式进行模拟
	-->
  <select id="selectTestData2" resultType="java.util.Map">
      SELECT
	      @rowno := @rowno + 1 AS rowno,
	      t_user.email AS email,
	      t_user.avatar AS avatar
      FROM
	      t_user,
	      ( SELECT @rowno := 0 ) t
      ORDER BY
	      rowno DESC
  </select>
</mapper>

调用

@Service
public class MapTest implements CommandLineRunner {

  @Autowired
  private UserMapper mapper;

  @Override
  public void run(String... args) throws Exception {

      Map<String, Map<String, String>> mapData1 = mapper.selectTestData2();
      System.out.println(mapData1);
  }
}

Mybatis返回Map数据方式示例

 

三. 方式3

接口

import org.apache.ibatis.annotations.MapKey;

public interface UserMapper {

  // 指定的key名称必须是User实体类中的属性
  @MapKey("id")
  Map<String, User> selectTestData3();
}
<?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="xxx.mapper.UserMapper">

  <!--由于最终是把数据封装到User实体类中,所以返回值的数据类型是User而不是Map-->
  <select id="selectTestData3" resultType="com.example.demo.transactionCom.entity.User">
      SELECT
        t_user.id as id,
        t_user.email as email,
        t_user.avatar as avatar
      FROM
        t_user
  </select>
</mapper>

调用

@Service
public class MapTest implements CommandLineRunner {

  @Autowired
  private UserMapper mapper;

  @Override
  public void run(String... args) throws Exception {

      Map<String, User> mapData2 = mapper.selectTestData3();
      Set<Map.Entry<String, User>> entries = mapData2.entrySet();
      for (Map.Entry<String, User> entry : entries) {
          User user = entry.getValue();
          System.out.println(user);
      }
  }
}

Mybatis返回Map数据方式示例

以上就是Mybatis返回Map数据方式示例的详细内容,更多关于Mybatis返回Map数据的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/feyehong/article/details/123858045

延伸 · 阅读

精彩推荐