Java 按计划运行所有派生DAO类的公共查询
我有一个包含常用方法的抽象类:Java 按计划运行所有派生DAO类的公共查询,java,jdbc,scheduling,dao,spring-jdbc,Java,Jdbc,Scheduling,Dao,Spring Jdbc,我有一个包含常用方法的抽象类: public abstract class AbstractDAO<T> implements IFindTradeDAO { @Autowired private JdbcTemplate jdbcTemplate; @Override public List<Trade> findOne(final int eventId) { return jdbcTemplate.query(
public abstract class AbstractDAO<T> implements IFindTradeDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<Trade> findOne(final int eventId) {
return jdbcTemplate.query(getOneQuery(), new Object[]{eventId}, new RowMapper());
}
@Override
public List<Event> getAll() {
return jdbcTemplate.queryForList(getAllQuery(), Event.class);
}
protected abstract String getOneQuery();
protected abstract String getAllQuery();
}
如果我有这个类结构,我想使用
org.springframework.scheduling.annotation.Scheduled
我不太确定如何派生一个将调用所有组件的组件?有什么技术或例子可以用来实现这一点吗 我不是Java程序员,但在.NET中,您需要将它们全部放入某种类型的列表或数组中,并对每个项调用函数
因此,也许可以创建一个名为addFindTradeDao的方法,将每个方法添加到一个列表中。然后对这些项中的每一项调用该方法。您是否尝试在GetAllEvents中同时注入TypeA和TypeB,并在processUnprocessedEvents中调用它们相应的方法?我对每种类型都有许多dao实现,并且自动连接和调用每种类型似乎很奇怪。
@Repository
public class TypeA extends AbstractDAO implements IFindTradeDAO {
private static final String FIND = "sql/findA.sql";
private static final String GET = "sql/getA.sql";
@Override
protected String getOneQuery() {
return FIND;
}
@Override
protected String getAllQuery() {
return GET;
}
@Repository
public class TypeB extends AbstractDAO implements IFindTradeDAO {
private static final String FIND = "sql/findB.sql";
private static final String GET = "sql/getB.sql";
@Override
protected String getOneQuery() {
return FIND;
}
@Override
protected String getAllQuery() {
}
}
@Component
public class GetAllEvents {
@Scheduled
public void processUnprocessedEvents() {
//invoke getAllQuery for all DAOS and combine results
}
}