我有一個帶有2個數據庫連接的DropWizard項目:一個MySql和一個Oracle(v11)。 MySql連接和查詢工作得很好。我沒有從我的Oracle查詢中獲取任何數據,並且我的日誌中沒有錯誤。使用DropWizard中的JDBI進行簡單的Oracle查詢不會執行/返回結果
我DOA看起來是這樣的:
public interface DummyDao {
@SqlQuery(
"select prod_sku, initial_qty, current_qty" +
" from prod_detail" +
" where prod_sku = :skuNumber")
@Mapper(DummyMapper.class)
Dummy getSku(@Bind("skuNumber") String skuNumber);
}
我的映射器看起來是這樣的。當我向映射器添加日誌語句時,我能夠驗證它從未被調用過。
public class DummyMapper implements ResultSetMapper<Dummy> {
public Dummy map(int index, ResultSet r, StatementContext ctx)
throws SQLException {
return new Dummy(
r.getString("prod_sku"),
r.getLong("initial_qty"),
r.getLong("current_qty"));
}
}
的DAO正在我的應用程序的運行方法,通過下面的代碼初始化:
public class ProductServiceApplication extends Application<ProductServiceConfiguration> {
DataSource sb_ds;
DBI sb_dbi;
DummyDao dummyDao;
@Override
public void run(
final ProductServiceConfiguration configuration,
final Environment environment) {
sb_ds = configuration.getSbliveDataSourceFactory()
.build(environment.metrics(), "sblive");
sb_dbi = new DBI(sb_ds);
dummyDao = sb_dbi.onDemand(DummyDao.class);
}
}
爲了驗證有沒有錯,我的連接,我暫時下面的代碼添加到我的run方法並返回預期結果:
try (Handle h = sb_dbi.open()) {
List<Map<String,Object>> result =
h.select("select initial_qty, current_qty from prod_detail where prod_sku = '10501034520008'");
System.out.println("bootstrap: " + result.toString());
}
使用相同參數執行我的DAO的getSku方法返回null。
有人能告訴我我做錯了什麼或指向我採取的措施,我可以採取措施找出是什麼原因造成的?我試圖調試它,但我對JDBI內部知識不夠了解,以瞭解我在看什麼。