一个DAO中既要继承HibernateDaoSupport也要继承SqlMapClientDaoSupport,即:hibernate和ibatis同时使用。内部类可以解决多继承的问题,但是如何注入内部类,废了一番周折。
关键字:static 解决问题。 内部类要用static修饰
public class EngineInfoDaoImpl extends HibernateDaoSupport implements EngineInfoDao {
@Autowired
private EngineInfoDaoImpl_ engineInfoDaoImpl_; // 注入内部类
// 调用内部类方法
public InfoEngineItem getInfoEngineItem(int itemId) {
return engineInfoDaoImpl_.getInfoEngineItem(itemId);
}
// 内部类实现多继承,static 很重要,否则spring会报错。
@Component
static class EngineInfoDaoImpl_ extends SqlMapClientDaoSupport {
public InfoEngineItem getInfoEngineItem(int itemId) {
return (InfoEngineItem)this.getSqlMapClientTemplate().queryForObject("engineInfo.getInfoEngineItem", itemId);
}
}