mysql数据库返回Map格式的简单实现

2022-06-26 08:38:50

数据库返回map格式,找了一下没有找到简单合适的,下面提供两种方式适合初学者

一、resultType = java.util.HashMap

mapper.xml

<select id="getNameAndAge" resultType="java.util.HashMap">
        SELECT name,age from student
</select>

返回的结果是一个个map对象,需要使用list<map>接受,令人蛋疼的是返回来的map是这种格式:student_name(字段名):name,student_age(字段名):age,但是我们希望的是返回一个以name为key,以age为value的map

我在mapper.xml这样写,返回的应该是一个个的【("key","zhangsan"),("value","20")】

<select id="getNameAndAge" resultType="java.util.HashMap">
        SELECT name as 'key',age as 'value' from student
</select>

使用上述这种写法返回的list<map>中,每个列表元素是一个map,每个map里面有两个元素如("key","zhangsan"),("value","20") ,然后遍历取出“key”和“value”即可

public Map<String,Integer> getNameAndAge() {
        final List<Map<String, String>> nameAndAgeMapping = studentMapper.getNameAndAge();
        Map<String,Integer> resultMap = new HashMap<>();
        nameAndAgeMapping .forEach(map->{
            resultMap.put(map.get("key"),map.get("value"));
        });
        return resultMap;
    }

二、resultType = 自定义对象(代码可读性强,推荐)

@Data
public class Student{
    private String studnetName;
    private Integer studentAge;
}
<select id="getNameAndAge" resultType="cn.lihaiyu.po.Student">
        SELECT name as 'studentName',age as 'studentAge' from student
</select>
public Map<String,Integer> getNameAndAge() {
        final List<Student> nameAndAgeMapping = studentMapper.getNameAndAge();
        Map<String,Integer> resultMap = new HashMap<>();
        nameAndAgeMapping .forEach(bo->{
            resultMap.put(bo.getStudentName(),bo.getStudentAge);
        });
        return resultMap;
    }

完结,希望对你有所帮助。

  • 作者:无情的搬砖机器
  • 原文链接:https://lihaiyu.blog.csdn.net/article/details/111573118
    更新时间:2022-06-26 08:38:50