首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于BaseDAO要注意的有关问题

2012-10-25 
关于BaseDAO要注意的问题、引用茶叶写的一个baseDAOpackage com.juno.dao.serviceimport java.util.ArrayL

关于BaseDAO要注意的问题
、引用茶叶写的一个baseDAO

package com.juno.dao.service;import java.util.ArrayList;import java.util.List;import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import org.springframework.stereotype.Component;/** * 所有Dao类的父类 *  * @author macrotea 2011-2-31 * @param <T> */@Component("baseDao")public class BaseDao<T, ID> extends HibernateDaoSupport {private static final Logger logger = LoggerFactory.getLogger(BaseDao.class);/** * 设置Dao将操作的实体 */private Class<T> entityClazz;public Class<T> getEntityClazz() {return entityClazz;}public void setEntityClazz(Class<T> entityClazz) {this.entityClazz = entityClazz;}public BaseDao() {super();}public BaseDao(Class<T> entityClazz) {this.entityClazz = entityClazz;}/** * 设置hibernateTemplate所需的SessionFactory */@Resourcepublic void setLocalSessionFactory(SessionFactory sessionFactory) {super.setSessionFactory(sessionFactory);}/** * 获得所有实体记录 */@SuppressWarnings("unchecked")public List<T> findAll() throws Exception {return getHibernateTemplate().find("FROM " + entityClazz.getSimpleName());}/** * 保存一个实体 */@SuppressWarnings("unchecked")public ID save(T obj) throws Exception {return (ID) getHibernateTemplate().save(obj);}/** * 保存/更新一个实体 */public void saveOrUpdate(T obj) throws Exception {getHibernateTemplate().saveOrUpdate(obj);}/** * 根据id获得一个实体 */@SuppressWarnings("unchecked")public T findById(int id) throws Exception {T retVal = (T) getHibernateTemplate().get(entityClazz, id);if (retVal == null) {logger.debug("get:该ID:" + id + " 的实体不存在!");}return retVal;}/** * 根据id加载一个实体 */@SuppressWarnings("unchecked")public T loadById(int id) throws Exception {T retVal = (T) getHibernateTemplate().load(entityClazz, id);return retVal;}/** * 根据id删除一个实体 */public void deleteById(int id) throws Exception {T entity = loadById(id);if (entity == null) {String msg = "delete:该ID:" + id + " 的实体不存在!";throw new Exception(msg);}getHibernateTemplate().delete(entity);}/** * 获得所有实体记录总数 */@SuppressWarnings("unchecked")public Long countAll() throws Exception {List retVal = getHibernateTemplate().find("SELECT count(*) FROM " + entityClazz.getSimpleName());return (Long) retVal.get(0);}/** * 根据属性和属性值查找 */@SuppressWarnings("unchecked")public List findByProperty(String propertyName, Object value) throws Exception {System.out.println("findByProperty value:" + value);List retVal = getHibernateTemplate().find("from " + entityClazz.getSimpleName() + " as model where model." + propertyName + "= ?", value);return retVal;}/** * 根据多个id查找 */public List<T> findByIdArray(Integer[] idArray) throws Exception {List<T> retVal = new ArrayList<T>();T model = null;for (int i = 0; i < idArray.length; i++) {model = findById(idArray[i]);retVal.add(model);}return retVal;}}


然后自己写一个dao类来继承basedao
package com.juno.dao.service.impl;import org.springframework.stereotype.Component;import com.juno.bean.Hello;import com.juno.dao.service.BaseDao;import com.juno.dao.service.HelloDAO;/** * @author Juno *  */@Component("helloDao")public class HelloDAOImpl extends BaseDao<Hello, Integer> implements HelloDAO {// property constantspublic static final String USERNAME = "username";public static final String AGE = "age";/* * 如下方式调用父类方法:super.XXX() */public HelloDAOImpl() {super(Hello.class);}@Overridepublic void update(Hello Hello) throws Exception {}}
  这时候、一定要记住加上
public HelloDAOImpl() {super(Hello.class);}
这个构造方法!要不无效! 1 楼 macrotea 2011-04-25   是啊
这个是必须的!
正因为这个问题
我发了一个帖子问网上的人,如何从泛型中获得传入的类
这样就不用再在实现类中的构造中 super(Hello.class); 

http://topic.csdn.net/u/20110424/14/6ce56884-aa0c-4594-beed-26ecf5b8f8a5.html 2 楼 lyuno 2011-04-25   macrotea 写道是啊
这个是必须的!
正因为这个问题
我发了一个帖子问网上的人,如何从泛型中获得传入的类
这样就不用再在实现类中的构造中 super(Hello.class); 

http://topic.csdn.net/u/20110424/14/6ce56884-aa0c-4594-beed-26ecf5b8f8a5.html
我前几天、直接就用你的这个dao搞了我几个小时、说找不到连接、然后在想怎么传进去!终于搞掂了!!

热点排行