Java 从数据表中提取列

Java 从数据表中提取列,java,cucumber,integration-testing,Java,Cucumber,Integration Testing,我有如下情景: Scenario: do something interesting Given the following users | first_name | last_name | address | | John | Doe | add1 | | Jane | Doe | add2 | 如何提取元素列表,例如:fromfirst\u name列 我试图使用cucumber.a

我有如下情景:

  Scenario: do something interesting
    Given the following users
      | first_name | last_name | address |
      | John       | Doe       | add1    |
      | Jane       | Doe       | add2    |
如何提取元素列表,例如:fromfirst\u name

我试图使用cucumber.api.DataTable,但它似乎用于其他目的


我只能提取行,然后根据需要对其进行管理。

我猜您只需要一个列表,但由于您使用的是原始jdbc调用,因此仍然需要遍历结果集。您需要精心设计查询,以便只返回一列,然后将每个项目行提取到结果列表对象中


现在,如果您使用JPA,您可以通过精心设计查询将结果提取到列表中,只返回一列,JPA将自动将其展开到列表中(或其他类型的列表,如Date或Integer)。

我猜您只需要一个列表,但由于您使用的是原始jdbc调用,因此仍然需要遍历结果集。您需要精心设计查询,以便只返回一列,然后将每个项目行提取到结果列表对象中


现在,如果您使用JPA,您可以通过精心设计查询将结果提取到列表中,只返回一列,JPA将自动将其展开到列表中(或其他类型的列表,如Date或Integer)。

我猜您只需要一个列表,但由于您使用的是原始jdbc调用,因此仍然需要遍历结果集。您需要精心设计查询,以便只返回一列,然后将每个项目行提取到结果列表对象中


现在,如果您使用JPA,您可以通过精心设计查询将结果提取到列表中,只返回一列,JPA将自动将其展开到列表中(或其他类型的列表,如Date或Integer)。

我猜您只需要一个列表,但由于您使用的是原始jdbc调用,因此仍然需要遍历结果集。您需要精心设计查询,以便只返回一列,然后将每个项目行提取到结果列表对象中


现在,如果您使用JPA,您可以通过精心设计查询将结果提取到列表中,只返回一列,JPA将自动将其展开到列表中(或其他类型的列表,如Date或Integer)。

我认为最可读的选项是
asMaps
方法,这样,您就可以独立于列的顺序:

@Given("^the following users$")
public void the_following_users(DataTable table) {
    for (Map<String, String> row : table.asMaps(String.class, String.class)) {
        System.out.println(row.get("first_name"));
    }
}
@给定(“^following users$”)
public使以下用户无效(数据表){
for(映射行:table.asMaps(String.class,String.class)){
System.out.println(row.get(“first_name”);
}
}

提取
数据表的单个列
不是其api的一部分,因此您必须自己在java中实现。

我认为最可读的选项是
asMaps
方法,这样您就独立于列的顺序:

@Given("^the following users$")
public void the_following_users(DataTable table) {
    for (Map<String, String> row : table.asMaps(String.class, String.class)) {
        System.out.println(row.get("first_name"));
    }
}
@给定(“^following users$”)
public使以下用户无效(数据表){
for(映射行:table.asMaps(String.class,String.class)){
System.out.println(row.get(“first_name”);
}
}

提取
数据表的单个列
不是其api的一部分,因此您必须自己在java中实现。

我认为最可读的选项是
asMaps
方法,这样您就独立于列的顺序:

@Given("^the following users$")
public void the_following_users(DataTable table) {
    for (Map<String, String> row : table.asMaps(String.class, String.class)) {
        System.out.println(row.get("first_name"));
    }
}
@给定(“^following users$”)
public使以下用户无效(数据表){
for(映射行:table.asMaps(String.class,String.class)){
System.out.println(row.get(“first_name”);
}
}

提取
数据表的单个列
不是其api的一部分,因此您必须自己在java中实现。

我认为最可读的选项是
asMaps
方法,这样您就独立于列的顺序:

@Given("^the following users$")
public void the_following_users(DataTable table) {
    for (Map<String, String> row : table.asMaps(String.class, String.class)) {
        System.out.println(row.get("first_name"));
    }
}
@给定(“^following users$”)
public使以下用户无效(数据表){
for(映射行:table.asMaps(String.class,String.class)){
System.out.println(row.get(“first_name”);
}
}

提取
数据表的单个列
不是其api的一部分,因此您必须自己在java中实现。

请尝试此代码,它将为您提供“first\u name”列下的值。如果有多行,则在循环中使用此代码

`@Given("^the following users$")
public void the_following_users(DataTable records) 
{
    for (Map<String, String> row : records.asMaps(String.class, String.class)) 
    { 
        System.out.println(row.get("first_name").intern());
    }
}`
`@给定(“^following users$”)
公共作废以下用户(数据表记录)
{
for(映射行:records.asMaps(String.class,String.class))
{ 
System.out.println(row.get(“first_name”).intern();
}
}`

请尝试此代码,它将为您提供“名字”列下的值。如果有多行,则在循环中使用此代码

`@Given("^the following users$")
public void the_following_users(DataTable records) 
{
    for (Map<String, String> row : records.asMaps(String.class, String.class)) 
    { 
        System.out.println(row.get("first_name").intern());
    }
}`
`@给定(“^following users$”)
公共作废以下用户(数据表记录)
{
for(映射行:records.asMaps(String.class,String.class))
{ 
System.out.println(row.get(“first_name”).intern();
}
}`

请尝试此代码,它将为您提供“名字”列下的值。如果有多行,则在循环中使用此代码

`@Given("^the following users$")
public void the_following_users(DataTable records) 
{
    for (Map<String, String> row : records.asMaps(String.class, String.class)) 
    { 
        System.out.println(row.get("first_name").intern());
    }
}`
`@给定(“^following users$”)
公共作废以下用户(数据表记录)
{
for(映射行:records.asMaps(String.class,String.class))
{ 
System.out.println(row.get(“first_name”).intern();
}
}`

请尝试此代码,它将为您提供“名字”列下的值。如果有多行,则在循环中使用此代码

`@Given("^the following users$")
public void the_following_users(DataTable records) 
{
    for (Map<String, String> row : records.asMaps(String.class, String.class)) 
    { 
        System.out.println(row.get("first_name").intern());
    }
}`
`@给定(“^following users$”)
公共作废以下用户(数据表记录)
{
for(映射行:records.asMaps(String.class,String.class))
{ 
System.out.println(row.get(“first_name”).intern();
}
}`

您需要行还是只需要列?如果您只需要列,那么应该旋转表。没有直接的方法只能访问列您是需要行还是只需要列?如果你只需要列,那么你