mybatis中通过map的key更改value

MyBatis批量更新Map值

mybatis中通过map的key更改value

找了一气才发现这个方法通过map的key批量修改其对应的value,废话少说,上代码。
在这里插入图片描述
在这里插入图片描述

MyBatis 中,将查询结果转换为 `Map` 并指定字段作为 `key` 和 `value`,可以通过两种方式实现:使用注解方式或在 `mapper.xml` 中定义 `resultMap`。 ### 使用注解方式 当需要将查询结果封装为 `Map`,并指定某个字段作为 `key` 时,可以使用 `@MapKey` 注解。例如: ```java @MapKey("id") Map<String, User> getAllUsersAsMap(); ``` 该方法返回的 `Map` 以 `User` 对象的 `id` 属性作为 `key`,整个 `User` 对象作为 `value`。这种方式适用于查询结果为实体类的情况,但若希望 `value` 是某个具体字段而非对象,则需进一步处理 [^4]。 ### 在 XML 中定义 `resultMap` 若需要将两个字段分别作为 `key` 和 `value`,可以在 `mapper.xml` 文件中自定义 `resultMap`,并指定 `key` 和 `value` 的映射字段。例如: ```xml <resultMap id="TargetMapResult" type="HashMap"> <result property="key" column="mon" javaType="Integer"/> <result property="value" column="amo" javaType="Integer"/> </resultMap> <select id="getMonAndAmo" parameterType="java.lang.Integer" resultMap="TargetMapResult"> SELECT mon, amo FROM biao WHERE type = #{type} </select> ``` 上述配置中,`mon` 字段作为 `Map` 的 `key`,`amo` 字段作为 `value`,返回类型为 `HashMap` [^2]。 若字段名不同,也可以类似地定义: ```xml <resultMap id="retMap" type="java.util.HashMap"> <result property="key" column="pwid_KEY" javaType="java.lang.String"/> <result property="value" column="pwid_VALUE" javaType="java.lang.String"/> </resultMap> ``` 这样即可将 `pwid_KEY` 和 `pwid_VALUE` 分别作为 `key` 和 `value` 返回 [^3]。 ### 注意事项 - 若直接返回 `Map` 而未使用 `@MapKey` 注解,当结果集超过一行时,MyBatis 会抛出异常,因为此时返回的是多个 `Map`,而每个 `Map` 无法合并成一个对象 [^1]。 - 使用 `@MapKey` 时,虽然能生成 `Map`,但 `value` 是一个对象,而不是直接的字段值,若需要字段值作为 `value`,应使用 `resultMap` 显式定义 [^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值