1

我正在学习 Eclipse Scout...我已经连接到 Sql 服务器,使用 Object[][] 获取数据...现在,我想使用 bean、beanarray holder 来获取数据...我不知道这个过程...

我已经创建了 bean 用户!
我已经使用服务填充了 bean,使用以下示例: http: //www.eclipse.org/forums/index.php/t/310526/

那么有人可以解释如何在侦察中使用豆子,填充表格或形成......

  1. 做一个bean例子:用户
  2. 填充服务中的bean示例:从用户表中获取用户数据
  3. 使用该 bean 填充表...

tnx

4

1 回答 1

0

Java POJO(豆)

如果您正在使用这样的普通旧 Java 对象 (POJO):

public class User {
    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

您可以像这样填充这些 POJO 的数组:

public User[] loadAll() throws ProcessingException {
  BeanArrayHolder<User> beansArray = new BeanArrayHolder<User>(User.class);

  SQL.selectInto(" select first_name, last_name " +
      " from users " +
      " into :{FirstName}, :{LastName} ", beansArray);

  return beansArray.getBeans();
}

要填充表格,您需要手动完成。例如在客户端:

for (User user : beansArray.getBeans()) {
  ITableRow row = getTable().createRow();
  getTable().getNameColumn().setValue(row, user.getLastName());
  getTable().getFirstNameColumn().setValue(row, user.getFirstName());
  getTable().addRow(row, true);
}

映射服务器端也是可能的。但在这种情况下,您应该明确考虑使用表数据(请参阅下一节)


表数据

您应该确保您使用的是基于 bean 的 TableData。阅读此答案以了解如何区分基于表的 TableData 和基于 bean 的 TableData

假设您的表单中有这样的 UserTableField:

@Order(10.0)
@FormData(sdkCommand = FormData.SdkCommand.USE, value = AbstractTableFieldBeanData.class, defaultSubtypeSdkCommand = FormData.DefaultSubtypeSdkCommand.CREATE)
public class UserTableField extends AbstractTableField<UserTableField.Table> {

  @Order(10.0)
  public class Table extends AbstractExtensibleTable {

    public LastNameColumn getLastNameColumn() {
      return getColumnSet().getColumnByClass(LastNameColumn.class);
    }

    public FirstNameColumn getFirstNameColumn() {
      return getColumnSet().getColumnByClass(FirstNameColumn.class);
    }

    @Order(10.0)
    public class FirstNameColumn extends AbstractStringColumn {

      @Override
      protected String getConfiguredHeaderText() {
        return TEXTS.get("FirstName");
      }
    }

    @Order(20.0)
    public class LastNameColumn extends AbstractStringColumn {

      @Override
      protected String getConfiguredHeaderText() {
        return TEXTS.get("LastName");
      }
    }
  }
}

您应该能够在您的服务中执行类似的操作:

UserTableRowData rowData = formData.getUserTable().addRow();
rowData.setFirstName("John");
rowData.setLastName("Smith");

如果您想要一个 SQL 查询来填充表,而不是手动添加行,您可以执行以下操作:

BeanArrayHolder<User> beansArray = new BeanArrayHolder<User>(User.class);

SQL.selectInto(" select first_name, last_name " +
      " from users " +
      " into :{UserTable.FirstName}, :{UserTable.LastName} ", formData);

TablePageData 的工作方式相同,请参阅我们教程中的示例:

MiniCrm 教程 > 编写第一页 > 在服务器上加载数据

于 2015-03-25T12:37:29.783 回答