Mybatis ResultMap 是 HashMap

2023-11-29

我似乎找不到一种方法来获取结果地图作为地图

MySQL 是

<select id="retrievePackageHeader" parameterType="java.lang.String" resultType="PackageHeaderMap">
    SELECT CONCAT(SCE_WRK_CTRL_NB, AC_CRR_CDE) as row_id, 
    MTC_CHK_TYP_CDE, 
    PLNR_REVW_IND, 
    PLNR_OWD_IND, 
    PKG_SLOT_TYP_CDE 
    FROM WSM_PKG_HDR WHERE AC_NB = '${value}';
    WITH UR
</select>

现在我需要 row_id 作为映射(键),其他列作为 bean 的属性。

我想做类似下面的代码的事情,但我找不到正确的语法。

 <resultMap id="PackageBeanResult"              type="PackageBean">
    <result property="checkType"                column="MTC_CHK_TYP_CDE"/>
    <result property="plannerReview"            column="PLNR_REVW_IND"/>
    <result property="plannerOwned"             column="PLNR_OWD_IND" />
    <result property="slotType"                 column="PKG_SLOT_TYP_CDE" />
 </resultMap>

 <resultMap id="PackageHeaderMap"               type="java.util.HashMap">
    <result property="java.lang.String"         column="row_id"/>
    <result property="object"                   resultMap="PackageBeanResult"/>
 </resultMap>

有任何想法吗?

Thanks.


就我而言,添加辅助类:

/**
 * Helper converting list to map.
 * @param <K> key
 * @param <V> value
 */
@Getter
public class MappingHelper<K, V> {
    private K key;
    private V value;

    /**
     * Return map from {@link MappingHelper} list.
     * @param list DTO list
     * @param <K> key
     * @param <V> value
     * @return map
     */
    public static <K, V> Map<K, V> toMap(List<MappingHelper<K, V>> list) {
        if (list == null) {
            return Collections.emptyMap();
        }
        return list.parallelStream().collect(Collectors.toMap(MappingHelper::getKey, MappingHelper::getValue));
    }
}

并且,初始化mapper.java:

List<MappingHelper<Integer, String>> getNames(@Param("ids") List<Integer> Ids);

映射器.xml:

<resultMap id="nameMap" type="package.model.MappingHelper">
    <id     property="key"   column="id"/>
    <result property="value" column="nm"/>
</resultMap>

<select id="getNames" resultMap="nameMap">
    SELECT id, nm
    FROM name_table
    WHERE id IN <foreach item="id" collection="ids" open="(" separator="," close=")">#{id}</foreach>
</select>

最后使用如下:

Map<Integer, String> names = MappingHelper.toMap(mapper.getNames(ids));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis ResultMap 是 HashMap 的相关文章

  • “放置”是否会覆盖现有值?

    哈希表新手 有一个简单的问题 由于某种原因 谷歌搜索没有给我一个直接的答案 假设我有一个
  • 用数字替换符号

    我想读取一个文件并检测符号后面的字符是数字还是单词 如果是数字 我想删除它前面的符号 将数字翻译成二进制并替换在文件中 如果是一个单词 我想首先将字符设置为数字16 但随后 如果使用另一个单词 我想在原始数字上添加1 这就是我想要的 如果文
  • Android - 从HashMap中获取值

    我尝试在 Android 中搜索 HashMap 但出现问题 考虑这个例子 HashMap
  • Amazon S3s 密钥背后的数据结构(过滤数据结构)

    我想实现一个类似于 Amazon S3 的查找功能的数据结构 就上下文而言 Amazon S3 将所有文件存储在平面命名空间中 但允许您通过文件名中的公共前缀查找文件组 从而复制目录树的功能 但又不那么复杂 问题是 查找和过滤操作都是 O
  • 使用 myBatis 从数据库中以 byte[] 的形式获取 blob

    我在一个项目中使用 spring MyBatis 1 2 0 其中有一个查询从 Oracle 11g 数据库中的 BLOB 字段获取数据 我想以字节数组 byte 的形式检索该字段 我的代码是
  • 如何使用注解配置的 MyBatis 指定 IN param 类型

    如果我希望能够传递空值 我似乎需要明确告诉 MyBatis java util Date IN 参数使用什么数据库类型 但我找不到办法做到这一点 我尝试了以下不同的变体 但没有成功 Select List
  • 不断向Map添加数据

    我需要在 for 循环之前将数据添加到 Map 或 HashMap 在 for 循环期间将数据添加到 Map 然后在循环后创建包含所有数据的文档 在 Android 的 Java 中我使用了 Map
  • Java、HashMap 和使用字符串作为键 - 字符串值是否会存储两次?

    如果我有一个如下所示的 HashMap HashMap
  • Mybatis 期望 selectOne() 返回一个结果(或 null),但发现:190

    我正在尝试从数据库检索值 但无法获取所有值 我正进入 状态TooManyResultsException 映射器接口 这是我正在调用的映射器接口 public interface ITranslatorDAO Map
  • 两个或多个(哈希)映射的并集

    我有两个包含相同类型对象的地图 Map
  • c++ pthread - 如何使地图访问线程安全?

    我有一个映射作为成员变量和多个访问该映射的线程 读写访问 现在我必须确保只有一个线程可以访问该地图 但我该如何点呢 最好的解决方案是什么 Boost 包含一些用于共享访问的很好的锁实现 看看文档 http www boost org doc
  • 为什么 Map.of 不允许空键和空值?

    在 Java 9 中 引入了新的工厂方法List Set and Map接口 这些方法允许使用一行中的值快速实例化 Map 对象 现在 如果我们考虑 Map
  • Java HashMap - 深拷贝

    我只是想找出如何进行深层复制的最佳解决方案HashMap 该映射中没有对象实现Cloneable 我想找到比序列化和反序列化更好的解决方案 看一眼深度克隆 在 Google Code 上您可以找到一个库 你可以阅读它https github
  • Java HashMap 与 ArrayList 相比的内存开销

    我想知道java HashMap与ArrayList相比的内存开销是多少 Update 我想提高搜索一大包 600 万以上 相同对象的特定值的速度 因此 我正在考虑使用一个或多个HashMap来代替ArrayList 但我想知道 HashM
  • Map:为 Integer 和 Double 类型定义方法,但不为 String 类型定义方法

    我正在尝试定义一个方法putIfGreaterThan 为了我的新Map class 给定一个键 仅当新值大于旧值时 它才会用新值替换旧值 我知道我可以通过组合来实现这一点 通过有一个private final Map
  • hashmap包含键的复杂度

    我写了一个方法来查找列表中的重复项 它工作正常 但我担心使用 containsKey 的复杂性 当我们使用 containsKey 时 我们必须为每个键计算一个哈希函数 然后将每个键与我们的搜索项进行比较 对吗 那么复杂度不是 O n 吗
  • 哈希表的空间复杂度是多少?

    具有 32 位键和指向单独存储的值的 32 位指针的哈希表的大小是多少 是 2 32 个槽 4 字节 键 4 字节 指向值的指针 4 10 9 4 4 32GB 我想了解哈希表的空间复杂度 我认为你问错了问题 数据结构的空间复杂度表示它占用
  • mybatis:使用带有 XML 配置的映射器接口作为全局参数

    我喜欢使用 XML 表示法来指定全局参数 例如连接字符串 我也喜欢 Mapper 注释 当我尝试将两者结合起来时 我得到这个例外 https stackoverflow com questions 4263832 type interfac
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap

随机推荐