java如何创建BaseDAO+JDBC并像@Autowired变量一样使用它?
我以前在Hibernate ORM中使用过DAO,它工作得很好。但现在我需要在JDBC中使用DAO,我不知道如何创建单个连接点
我是这样使用的:
public interface BaseDao<E> {
public E persist(E e);
public E get(Long id);
E get(Integer id);
public List<E> getAll();
E merge(E e);
}
与实现
@Repository
@Transactional(propagation = Propagation.REQUIRED)
public abstract class BaseJpaDao<E> implements BaseDao<E> {
protected Class<?> entityClass;
@PersistenceContext(unitName = "mainDataBase")
protected EntityManager entityManager;
public BaseJpaDao(Class<?> entityClass) {
this.entityClass = entityClass;
}
@Override
public E persist(E e) {
entityManager.persist(e);
return e;
}
@Override
public E get(Long id) {
return (E) entityManager.find(entityClass, id);
}
@Override
public E get(Integer id) {
return (E) entityManager.find(entityClass, id);
}
@Override
public List<E> getAll(){
return getSession().createCriteria(entityClass).list();
}
@Override
public E merge(E e){
checkFieldsForNull(e);
return entityManager.merge(e);
}
但是现在我需要使用JDBC,我使用这个:
public class BaseDao {
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
public BaseDao(String serviceName) throws NamingException {
Context envContext = new InitialContext();
String jndiUrl = MessageFormat.format("osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/{0})", serviceName);
dataSource = (DataSource) envContext.lookup(jndiUrl);
}
public BaseDao(DataSource dataSource) {
this.dataSource = dataSource;
}
}
和实现:
@Repository
public class SubscriberDaoImpl extends BaseDao implements SubscriberDao {
public SubscriberDaoImpl(String serviceName) throws NamingException {
super(serviceName);
}
@Override
public List<SubsDetail> getSubsDetils(Long subsId, Date startDate, Date endDate) {
return null;
}
}
在这之后,我想使用我的DAO类,比如:
public class SubscriberProcessorImpl implements SubscriberProcessor {
@Autowired
SubscriberDao subscriberDao;
@Override
public String getSubscriberDetail(Long id, Date startDate, Date endDate) {
List<SubsDetail> subsDetils = subscriberDao.getSubsDetils(id, startDate, endDate);
return DataFormatUtil.me().prepareResponseJson(subsDetils, ResultCode.SUCCESS, "");
}
}
但我需要将参数传递给DAO,我不知道如何传递
共 (0) 个答案