Mybatis查询 返回map集合 resultType等于map 及 @Select注解查询返回Map

Mybatis查询 返回map集合 resultType等于map 及 @Select注解查询返回Map

1.Mybatis查询返回Map不推荐这么来查询,针对特殊场景等简便查询使用。

1.返回一个

<select id="getReturnMap" parameterType="int" resultType="map">
    select username,address from users where id=#{id}
</select>

Map<String, Object> getReturnMap(int id);

Map map = new() 类.getReturnMap(3);
map.get("username");   //返回  查出来的username

2.返回多个

<select id="getReturnListMap" parameterType="int" resultType="map">
    select username,address from users
</select>

List<Map<String, Object>> getReturnListMap();

List<Map> list =  类.getReturnListMap;
list.forEach(map->System.out.println(map));

以下为demo及@Select注解查询返回Map应用:
在MyBatis中,@Select注解通常用于映射SQL查询到Java对象。然而,如果你想将查询结果映射到一个Map而不是一个具体的Java对象,你可以使用@Results和@Result注解来手动指定如何将列映射到Map的键上。

@Mapper
public interface PayMapper{
    //方法1
    Map<String, Object> selectPayInfoByPrimaryKey(@Param("qn") String qn);

    //方法2
    @Select("SELECT " +
            " id,auth_code as authCode,out_order_no as outOrderNo " +
            " FROM tt_pay_center " +
            " WHERE qn = #{qn} " +
            " AND is_delete = 0 ORDER BY id DESC LIMIT 1 ")
    @Results(id = "userMap", value = {
            @Result(property = "id", column = "id"),
            @Result(property = "authCode", column = "authCode"),
            @Result(property = "outOrderNo", column = "outOrderNo")
    })
    Map<String, Object> selectPayInfoByPrimaryKeyV2(@Param("qn") String qn);

    //方法3
    //跟上面的@Results是一样的返回结果。   在方法2的基础上,@Results可以不用写。
    @Select("SELECT " +
            " id,auth_code as authCode,out_order_no as outOrderNo " +
            " FROM tt_pay_center " +
            " WHERE qn = #{qn}  " +
            " AND is_delete = 0 ORDER BY id DESC LIMIT 1 ")
    Map<String, Object> selectPayInfoByPrimaryKeyV3(@Param("qn") String qn);
}

PayMapper.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="com.test.mapper.PayMapper">

    <select id="selectPayInfoByPrimaryKey"  resultType="map">
        SELECT
        id,auth_code as authCode,out_order_no as outOrderNo
        FROM tt_pay_center
        WHERE qn = #{qn}
        AND is_delete = 0 ORDER BY id DESC LIMIT 1
    </select>
    
</mapper>

 

posted on 2025-05-28 10:27  oktokeep  阅读(759)  评论(0)    收藏  举报