如何将查询结果映射到java中的字符串数组

Posted

技术标签:

【中文标题】如何将查询结果映射到java中的字符串数组【英文标题】:how to map query result to string array in java 【发布时间】:2019-08-01 19:55:36 【问题描述】:
select id,name,salary,city,state,country from employee where name like '%a%';

我需要将上面的查询结果映射到字符串数组,位置 0 总是 id,位置 1 总是名称......位置 5 总是国家。

使用 JPA 或 MyBatis 有没有一种方法可以将选择查询值动态映射到固定位置的字符串数组?

【问题讨论】:

是的,这将是 JPA 的默认结果。你为什么不……试试看? @JBNizet 到目前为止我用来映射员工对象,我现在需要可能的字符串数组,你能分享一个小例子 到目前为止你尝试了什么? 有很多方法可以解决这个问题。如果您发布您尝试或尝试做的事情,这将非常有帮助。 @jpganz18 & denov 与上面的场景类似 我要映射 100+ 个查询结果,每个查询选择字段不同,查询之间很少有共同点,每个查询的选择列数不同,总共 400 - 500 列。不想为每个查询创建一个类,所以考虑添加基于索引的。不想迭代并向数组添加值,所以看看有没有一种方法可以直接将列映射到数组。 List 数组将具有列值,列表将具有行值。 【参考方案1】:

我从未亲自使用过 JPA,但是 - 在阅读了一些之后 - 相信这应该是正确的。

TypedQuery<Object[]> query = entityManager.createQuery(
  "SELECT id,name,salary,city,state,country FROM employee WHERE name LIKE '%a%'", Object[].class);
List<Object[]> results = query.getResultList();

其中 (Integer) results.get(index)[0] = id,(String) results.get(index)[1] = name 等

如果您想要一个字符串数组,可以将 Object[] 更改为 String[]。

【讨论】:

请看我上面的cmets,希望能回答你的问题【参考方案2】:

为什么要使用String数组?

最好使用对象列表。使用employee.getCity()array[3] 更容易获得员工所在的城市。

它也使代码更具可读性。

要使用对象列表,您需要为您的员工创建一个模型并使用@Entity 进行注释并为该实体创建一个存储库。 JPA 文档应该可以帮助您轻松完成这项工作

【讨论】:

类似于上面的场景我要映射100+个查询结果,每个查询的选择字段都不一样,查询之间很少有共同点,每个查询的选择列数也不一样,一共400-500列。不想为每个查询创建一个类,所以考虑添加基于索引的。不想迭代并向数组添加值,所以看看有没有一种方法可以直接将列映射到数组。 List 数组将具有列值,列表将具有行值。 如果这是你想要的,应该直接使用 resultSet。就做stringArray[i] = resultSet.get(i)

以上是关于如何将查询结果映射到java中的字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

将 Java 结果集转换为字符串数组

C++如何把位图保存到数组中

如何逐步计算字符串数组中的字符数? -Java

将 SQL 查询结果转换为字符串数组

PHP如何将SQL查询结果转为多维数组,并按查询行输出

如何使用 Hibernate 将 SQL 查询的结果最好地映射到非实体 Java 对象?