@MapKey----mybatis返回Map

mybatis返回Map

有时候我们可能想让一条查询语句直接能够返回Map,而不是List。

可以使用@MapKey来指定实体类中让哪个属性来当key(注意是实体类中的属性,不是表中的字段),而value就是所需的对象。

实体类:People,该实体类不一定是与数据库表对应的
@Data
@TableName("people")
public class People implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId("id")
    private Integer id;

    @TableField("name")
    private String name;

    @TableField("address")
    private String address;

    @TableField("phone")
    private Long phone;
}
mapper里:
public interface PeopleMapper extends BaseMapper<People> {

    //这个name是People中的属性,而不是表中的字段
    @MapKey("name")
    Map<String,People> getAllPeople();
}
xml中:
   <select id="getAllPeople" resultType="java.util.Map" resultMap="peopleResultMap">
        select id, `name`, address, phone
        from people
    </select>

    <resultMap id="peopleResultMap" type="com.springlearn.qiyan.mapkey.entity.People">
        <result property="name" column="name"/>
        <result property="phone" column="phone"/>
        <result property="address" column="address"/>
    </resultMap>

在xml中应该写好该类对应的resultMap

表中数据

people表中的数据

返回值:
{
    "code": 200,
    "msg": "处理成功",
    "data": {
        "陆游": {
            "id": 4,
            "name": "陆游",
            "address": "北京",
            "phone": 13954687412
        },
        "辛弃疾": {
            "id": 3,
            "name": "辛弃疾",
            "address": "济南",
            "phone": 12574693258
        },
        "李白": {
            "id": 1,
            "name": "李白",
            "address": "成都",
            "phone": 13469521374
        },
        "韩信": {
            "id": 2,
            "name": "韩信",
            "address": "山东",
            "phone": 19634895213
        },
        "苏轼": {
            "id": 5,
            "name": "苏轼",
            "address": "苏州",
            "phone": 13697532169
        }
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值