簡體   English   中英

我應該使用哪種DAO方法?

[英]What DAO method I should use?

我有兩個組合框連接到ORMLite中的兩個DatabaseTables。 例如,第一個組合框顯示品牌(來自brands_table),第二個組合框顯示模型(來自models_table)。 Models_table也具有帶有brandId的foreignField。 保存新記錄時,必須先選擇品牌,然后再選擇型號。

為了初始化並在兩個組合框中設置數據,我使用了DAO的queryForAll方法。

我的問題是,當我已經從第一個組合框中選擇某些內容時,可以使用哪種方法來過濾第二個組合框中的數據。 我在考慮queryForEqqueryForMatching

現在正常的初始化是:

public void initializeModelsList() throws ApplicationException {
    CarModelDao carModelDao = new CarModelDao(DBManager.getConnectionSource());
    List<CarModel> listOfModels = carModelDao.queryForAll(CarModel.class);
    modelsList.clear();
    // loop
    listOfModels.forEach((c) -> {
        // create new object ModelsFX model
        ModelsFX modelsFX = ConverterModels.convertToModelFX(c);
        this.modelsList.add(modelsFX);

我在想的是:

public void initializeFilteredModelsList() throws ApplicationException {
    CarBrandDao carBrandDao=new CarBrandDao(DBManager.getConnectionSource());
    CarBrand tempCarBrand = carBrandDao.findById(CarBrand.class, this.getModelsFxObjectProperty().getBrandsFXObjectProperty().getId());
    //it returns int with ID

    CarModelDao carModelDao = new CarModelDao(DBManager.getConnectionSource());
    List<CarModel> listOfFilteredModels = carModelDao.//searching for same ID in foreignField(brand_ID) in models_table
    listOfFilteredModels.forEach((c) -> {
        // create new object ModelsFX model
        ModelsFX modelsFX = ConverterModels.convertToModelFX(c);
        this.modelsList.add(modelsFX);
    });

我的問題是,當我已經從第一個組合框中選擇某些內容時,可以使用哪種方法來過濾第二個組合框中的數據。

據我了解,這是異物的教科書示例, ORMLite文檔對此進行了很好的介紹 在文檔的示例中,它們具有AccountOrder ,在您的示例中為CarBrandCarModel

引用文檔:

您可以通過兩種不同的方式查詢外部字段。 以下示例顯示了查詢與某個帳戶字段匹配的所有訂單的代碼。 由於id字段是name字段,因此您可以按帳戶的name字段進行查詢:

// query for all orders that match a certain account
List<Order> results = orderDao.queryBuilder().
    where().eq("account_id", account.getName()).query();

或者,您也可以讓ORMLite從帳戶本身提取ID字段。 這將執行與上面相同的查詢:

// ORMLite will extract and use the id field internally
List<Order> results = orderDao.queryBuilder().where().eq("account_id", account).query();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM