gpt4 book ai didi

java - 我如何使用 spring Autowiring 使用内存中的 derby 数据库来使用一堆 DAO?

转载 作者:行者123 更新时间:2023-11-28 21:27:35 25 4
gpt4 key购买 nike

我有一个 DALS 集合,例如 Transaction DAO、Billing DAO 等。它们每个都有 CRUD 操作,我需要在使用 spring Autowiring 的项目中使用这些方法。在我检查过的一些项目中,我看到他们正在通过查询来获取内存中的数据。但是,我必须使用已经编写好的 DAL,并拥有所有的 CRUD 操作。

例如:

        @Autowired
TransactionDAO transactionDAO

@Autowired
BillingDAO billingDAO

@Test
public void testImplementSearchMethodForDAO() throws Exception{

TransactionVO transactionVO = getTransVO();
BillingVO billingVO = getBillingVO();
List<TransactionVO> VOList1 = transactionDAO.searchList(transactionVO);
List<BillingVO> VOList2 = billingDAO.searchList(billingVO);
assertThat(VOList1.size()).isEqualto(1));
assertThat(VOList1.size()).isEqualto(1));
}
(Assuming I added one VO value in each table).

If you need any more clarifications, I will be glad to provide you.

最佳答案

您可以使用 setter 并在 setter 上使用@Autowire 注释。您的测试代码必须使用这些 setter 注入(inject) DAO。在你的测试中,你构建了 mem: db 实例并构建了一个连接池或数据源或任何你需要的东西,然后基于它构建 DAO。

你的 setup() 会像这样

BoneCPConfig config = new BoneCPConfig();
config.setJdbcUrl("jdbc:hsqldb:mem:test_common;shutDown=false");
config.setUsername("sa");
config.setPassword("");
JdbcTemplate dataSource = new BoneCPDataSource(config);
jdbcTemplate = new JdbcTemplate(dataSource);
//If you are using named queries
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
//create necessary tables etc here.
setupDb(jdbcTemplate);

SomeBean anotherBean = new SomeBean();

YourDAO dao = new YourDAOImpl();
dao.setNamedJdbcTemplate(namedParameterJdbcTemplate);
dao.setSomeOtherBean(anotherBean);

//Mimic spring container if you implement InitialzingBean

dao.afterPropertiesSet();

注入(inject)所有依赖项后,您可以像往常一样运行测试。

关于java - 我如何使用 spring Autowiring 使用内存中的 derby 数据库来使用一堆 DAO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35235101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com