回复 楼主 JeffLi
经过几天的查找。终于被我整出来了。分享下
BaseDao.java
=================================================
package com.jeff.dao;
public interface BaseDao<T, PK> {
public void add(T entity);
public void delete(T entity);
public void update(T entity);
public void deleteById(PK id);
public T findById(PK id);
}
=================================================
BaseDaoImpl.java
=================================================
package com.jeff.dao;
import
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class BaseDaoImpl<T, PK extends Serializable> extends
HibernateDaoSupport implements BaseDao<T, PK> {
protected Class entityclass;
public void add(final T entity) {
// 使用这个方法的记得在applicationContext.xml中配置sessionFaction就注入到使用类中
// 想知道原因。就看HibernateDaoSupport类中吧!
getHibernateTemplate().save(entity);
// 此处是一个回调方法。也可以使用。习惯使用Session来操作数据库的可以看下!
// getHibernateTemplate().execute(new HibernateCallback() {
// public Object doInHibernate(Session s) throws HibernateException,
// SQLException {
// s.save(entity);
// return null;
// }
//
// });
}
public void delete(T entity) {
getHibernateTemplate().delete(entity);
}
public void deleteById(PK id) {
T t = (T) getHibernateTemplate().get(this.entityclass, id);
getHibernateTemplate().delete(t);
}
public T findById(PK id) {
return (T) getHibernateTemplate().get(this.entityclass, id);
}
public void update(T entity) {
getHibernateTemplate().update(entity);
}
}
=================================================================
其它Dao类就可以这样写了
例: UserDao.java
=================================================================
package com.jeff.dao;
import java.util.List;
import com.jeff.domain.User;
public interface UserDao extends BaseDao<User, Integer> {
public void findByUserName(String username);
public List<User> findAllUser();
}
==================================================================
UserDaoImpl.java
==================================================================
package com.jeff.dao;
import java.util.List;
import com.jeff.domain.User;
public class UserDaoImpl extends BaseDaoImpl<User, Integer> implements UserDao {
public List<User> findAllUser() {
return null;
}
public void findByUserName(String username) {
}
}
====================================================================
上面UserDao虽然啥也没做。也可以调用到BaseDao中实现的方法。
如果有更好的思路随时扣我。(灰常感谢)