`

struts2 hibernate spring注解的整合(重写了巴巴运动网部门功能)

阅读更多
下面是Dao(泛型),及其Dao实现类
下面是一个User实体类的用法Dao,Servlet用法,希望对大家有帮助,本来还想贴一下该网站的权限功能的,就放在源代码里面,只要修改jdbc.properties配置文件的数据库的用户名和密码,并建立自己的数据库就好了,数据库表自动生成,下面lib1,lib2,lib3是jar包,一起放在shop9源代码文件lib文件夹下面就可以,shop9是源代码

import java.io.Serializable;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * 
 * @author wxh64788665@yahoo.cn begin:20120818
 *
 * @param <T> 实体类
 * @param <PK> 主键
 */
public interface GenericDao <T,PK extends Serializable>{
    /**
     * 根据id查找指定的实体
     * @param id
     * @return
     */
	public T findById(PK id);
	/**
	 * 查找所有实体
	 * @return
	 */
	public List<T> findAll();
	/**
	 * 保存实体
	 * @param entity
	 */
	public void save (T entity);
	/**
	 * 更新实体
	 * @param entity
	 */
	public void update(T entity);
	/**
	 * 删除实体
	 * @param entity
	 */
	public void delete(T entity);
	/**
	 * 根据hql查找指定的实体
	 * @param hql
	 * @return
	 */
	public List<T> findAllByHql(String hql);
    /**
     * 删除实体集合
     * @param entities
     */
	public void deleteAll(Collection<T> entities);   
	/**
	 * 
	 * @param hql 代表hql语句查询
	 * @param params 相应的参数值
	 * @param pageSize 分页的大小
	 * @param pageNumber 分页的页码
	 * @param othername hql 中表的别名
	 * @param orderby 什么顺序排序
	 * @return List<ProductType> 集合
	 */
	
	public List<T>  getList(final String hql, final Object[] params,final Integer pageSize,final Integer pageNumber,final String othername,final LinkedHashMap<String,String> orderby);

	/**
	 * 根据hql和相应的参数,获取实体的总记录数
	 * @param hql
	 * @param params
	 * @return
	 */

	public Object queryObject(final String hql, final Object[] params);
	
	
	/**
	 * 
	 * @param hql 代表hql语句查询
	 * @param params 相应的参数值
	 * @param pageSize 分页的大小
	 * @param pageNumber 分页的页码
	 * @return
	 */
	public List<T>  getList(final String hql, final Object[] params,final Integer pageSize,final Integer pageNumber);

	
	/**
	 * 
	 * @param hql 代表hql语句查询
	 * @param params 相应的参数值
	 * @param othername 别名
	 * @param orderby 根据说明排序
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getList(final String hql, final Object[] params,final String othername,final LinkedHashMap<String,String> orderby);
	
	/**
	 * 
	 * @param hql 代表hql语句查询
	 * @param params 相应的参数值
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getList(final String hql, final Object[] params);

	
	
	/**
	 * 
	 * @param hql 代表hql语句查询
	 * @param params 相应的参数值
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List getList(final String hql, final Object[] params,Integer maxResult);
	
	/**
	 *清除一级缓存的数据
	 */
	public void clear();
}



import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.sql.SQLException;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.itcast.bean.common.dao.GenericDao;



/**
 * 泛型Dao实现类
 * @author wxh64788665@yahoo.cn
 *
 * @param <T>
 * @param <PK>
 */
public class GenericDaoHibernate<T, PK extends Serializable> extends
		HibernateDaoSupport implements GenericDao<T, PK> {
	private Class<T> clazz;
	
	@Resource
	public void setSessionFactory0(SessionFactory sessionFactory){ 
	  super.setSessionFactory(sessionFactory); 
	}
	
	@SuppressWarnings("unchecked")
	public GenericDaoHibernate() {
		clazz = (Class<T>) ((ParameterizedType) getClass()
				.getGenericSuperclass()).getActualTypeArguments()[0];
	}

	public void delete(T entity) {
		getHibernateTemplate().delete(entity);
	}

	@SuppressWarnings("unchecked")
	public List<T> findAll() {
		List<T> list = getHibernateTemplate().find("from  " + clazz.getName());
		return list;
	}
	
	@SuppressWarnings("unchecked")
	public List<T> findAllByHql(String hql) {
		List<T> list = getHibernateTemplate().find("from  " + hql);
		return list;
	}

	@SuppressWarnings("unchecked")
	public T findById(PK id) {
		T entity = (T) getHibernateTemplate().get(clazz, id);
		return entity;
	}

	public void save(T entity) {
		getHibernateTemplate().save(entity);

	}

	public void update(T entity) {
		getHibernateTemplate().update(entity);
	}


	public  Object queryObject(final String hql, final Object[] params) {
		return getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql);
				if (params != null) {
					for (int i = 0; i < params.length; i++)
						query.setParameter(i, params[i]);
				}
				return query.uniqueResult();
			}
		});
	}
	/**
	 * 根据hql和相应的参数,分页的大小和页码获取相应实体的集合
	 * @param hql
	 * @param params
	 * @param pageSize
	 * @param pageNumber
	 * @return
	 */
    //根据实体的属性asc/desc
	//Order by key1 desc,key2 asc
	@SuppressWarnings("unchecked")
	public List<T> getList(final String hql, final Object[] params,final Integer pageSize,final Integer pageNumber,final String othername,final LinkedHashMap<String,String> orderby) {
  return  (List)getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql+buildOrderby(orderby,othername));
				if (params != null) {
					for (int i = 0; i < params.length; i++)
						query.setParameter(i, params[i]);
				}
				query.setMaxResults(pageSize);
				query.setFirstResult(pageSize*(pageNumber-1));
				return query.list();
				
			}
		});
	}
	
	/**
	 * 根据hql和相应的参数,并相应的排序获取相应实体的集合
	 * @param hql
	 * @param params
	 * @return
	 */
    //根据实体的属性asc/desc
	//Order by key1 desc,key2 asc
	@SuppressWarnings("unchecked")
	public List<T> getList(final String hql, final Object[] params,final String othername,final LinkedHashMap<String,String> orderby) {
  return  (List)getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql+buildOrderby(orderby,othername));
				if (params != null) {
					for (int i = 0; i < params.length; i++)
						query.setParameter(i, params[i]);
				}
				return query.list();
				
			}
		});
	}
	

	/**
	 * 根据hql和相应的参数,获取相应实体的集合
	 * @param hql
	 * @param params
	 * @return
	 */
    //根据实体的属性asc/desc
	//Order by key1 desc,key2 asc
	@SuppressWarnings("unchecked")
	public List<T> getList(final String hql, final Object[] params) {
  return  (List)getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql);
				if (params != null) {
					for (int i = 0; i < params.length; i++)
						query.setParameter(i, params[i]);
				}
				return query.list();
				
			}
		});
	}
	
	
	
	
	/**
	 * 拼接排序
	 * @param orderby
	 * @return
	 */
	private String buildOrderby(LinkedHashMap<String,String> orderby,String  othername)
	{
		StringBuffer orderbyql=new StringBuffer("");
		if(orderby!=null&& orderby.size()>0)
		{
			orderbyql.append(" order by ");
			for(String key :orderby.keySet())	
				orderbyql.append(othername).append(".").append(key).append(" ").append(orderby.get(key)).append(",");
			
			orderbyql.deleteCharAt(orderbyql.length()-1);
		}
		return orderbyql.toString();
	}

	@Override
	public void deleteAll(Collection<T> entities) {
		getHibernateTemplate().deleteAll(entities);
		
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<T> getList(final String hql, final Object[] params,final Integer pageSize,
		final	Integer pageNumber) {
		  return  (List)getHibernateTemplate().execute(new HibernateCallback() {
				public Object doInHibernate(Session session)
						throws HibernateException, SQLException {
					Query query = session.createQuery(hql);
					if (params != null) {
						for (int i = 0; i < params.length; i++)
							query.setParameter(i, params[i]);
					}
					query.setMaxResults(pageSize);
					query.setFirstResult(pageSize*(pageNumber-1));
					return query.list();
					
				}
			});
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<T> getList(final String hql, final Object[] params, final Integer maxResult) {
		return  (List)getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hql);
				if (params != null) {
					for (int i = 0; i < params.length; i++)
						query.setParameter(i, params[i]);
				}
				query.setFirstResult(0).setMaxResults(maxResult);
				return query.list();
				
			}
		});
	}

	@Override
	public void clear() {
		
		getHibernateTemplate().clear();
		
	}
	

}



import com.itcast.bean.common.dao.GenericDao;
import com.itcast.bean.user.Buyer;

public interface BuyerDao extends GenericDao<Buyer, String>{
	

	/**
	 * 启用指定用户
	 * @param usernames
	 */
	public void enable(String ... usernames);
	
	/**
	 * 禁用指定用户
	 * @param usernames
	 */
	public void delete(String ... usernames);
	
	/**
	 * 用户名,新密码,修改用户密码
	 * @param username
	 * @param newpassword
	 */
	public void updatePassord(String username,String newpassword);

}


import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Component;

import com.itcast.bean.common.dao.hibernate.GenericDaoHibernate;
import com.itcast.bean.user.Buyer;
import com.itcast.bean.user.dao.BuyerDao;

@Component
public class BuyerDaoHibernate extends GenericDaoHibernate<Buyer, String> implements
		BuyerDao {

	@Override
	public void delete(String... usernames) {
		SetVisble(false,usernames);
		
	}

	private void SetVisble(Boolean visible,String... usernames) {
		if(usernames!=null&&usernames.length>0)
		{
			StringBuffer strHql=new StringBuffer();
			List<Object> params=new ArrayList<Object>();
			params.add(visible);
			for(String username : usernames)
			{
				strHql.append("?").append(",");
				params.add(username);

			}
			strHql.deleteCharAt(strHql.length()-1);
		    getHibernateTemplate().bulkUpdate("update Buyer as b set b.visible=? where b.username in ("+strHql.toString()+")",params.toArray());
		}
	}

	@Override
	public void enable(String... usernames) {
		SetVisble(true,usernames);
	}

	@Override
	public void updatePassord(String username, String newpassword) {
		// TODO Auto-generated method stub
		getHibernateTemplate().bulkUpdate("update Buyer as b set b.password=? where b.username=?",new Object[]{newpassword,username});
	}


}


import java.util.LinkedHashMap;

import com.itcast.bean.user.Buyer;
import com.itcast.common.util.PageModel;

public interface BuyerManager {
	/**
	 * 用于注册用户的保存
	 * @param buyer
	 */
	public void save(Buyer buyer);
	

	/**
	 * 判断用户是否存在,存在返回true,不存在返回false
	 * @param username 用户名
	 * @return
	 */
	public Boolean exsit(String username);
	
	/**
	 * 判断用户名和密码是否正确,正确返回true,不存在返回false;
	 * @param buyer
	 * @return
	 */
	public Boolean validate(Buyer buyer);
	
	
	/**
	 * 
	 * @param username 用户名
	 * @return 用户对象
	 */
	public Buyer load(String username);
	
	
	/**
	 * 
	 * @param pageSize 当前分页大小
	 * @param pageNumber 当前页码
	 * @param orderby 根据什么排序
	 * @param buyer  用户对象
     * @param query  查询界面传递过来,默认是true
	 * @return
	 */
	public PageModel<Buyer> getPageModelByBuyer(final Buyer buyer,final Integer pageSize,final Integer pageNumber,final LinkedHashMap<String,String> orderby,final String query);

	/**
	 * 启用指定用户
	 * @param usernames
	 */
	public void enable(String ... usernames);
	
	/**
	 * 禁用指定用户
	 * @param usernames
	 */
	public void delete(String ... usernames);
	
	/**
	 * 用户名,新密码,修改用户密码
	 * @param username
	 * @param newpassword
	 */
	public void updatePassord(String username,String newpassword);
}


import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.itcast.bean.user.Buyer;
import com.itcast.bean.user.dao.BuyerDao;
import com.itcast.common.util.Const;
import com.itcast.common.util.MD5;
import com.itcast.common.util.PageModel;
import com.itcast.service.user.BuyerManager;
@Service
public class BuyerManagerImpl implements BuyerManager {

	@Resource
	private BuyerDao buyerDao;
	@Override
	public void save(Buyer buyer) {
		buyer.setPassword(MD5.MD5Encode(buyer.getPassword()));
		buyerDao.save(buyer);		
	}
	@Override
	public Boolean exsit(String username) {
		Long count=(Long)buyerDao.queryObject("select count(b) from Buyer as b where b.username=?", new Object[]{username});
		return count>0?true:false;
	}
	@Override
	public Boolean validate(Buyer buyer) {
	
		Long count=(Long)buyerDao.queryObject("select count(b) from Buyer as b where b.username=? and b.password =?", new Object[]{buyer.getUsername(),MD5.MD5Encode(buyer.getPassword())});
		return count>0?true:false;
	}
	@Override
	public Buyer load(String username) {
		return buyerDao.findById(username);
	}
	@Override
	public PageModel<Buyer> getPageModelByBuyer(Buyer buyer, Integer pageSize,
			Integer pageNumber, LinkedHashMap<String, String> orderby,
			String query) {
		List<Buyer> buyers;
		StringBuffer hql=new StringBuffer("from Buyer as b where 1=1");
		List<Object> params=new ArrayList<Object>();
		if("true".equals(query)) //进行查询操作
		{
	    if(buyer!=null)
	    {
		if(buyer.getUsername()!=null&&!"".equals(buyer.getUsername().trim()))
		{
			hql.append(" and b.username like ? ");
			params.add("%"+buyer.getUsername()+"%");
		}
		if(buyer.getRealName()!=null&&!"".equals(buyer.getRealName().trim()))
		{
			hql.append(" and b.realName like ? ");
			params.add("%"+buyer.getRealName()+"%");
		}
		if(buyer.getEmail()!=null&&!"".equals(buyer.getEmail().trim()))
		{
			hql.append(" and b.email like ? ");
			params.add("%"+buyer.getEmail()+"%");
		}
		
	    }
		}
		if (pageNumber == null) {
			pageNumber = Const.DEFAULT_NUMBER;
			
			buyers = buyerDao.getList(
					hql.toString(),
					params.toArray(), pageSize, pageNumber, "b",orderby);
		} else
			buyers = buyerDao.getList(
					hql.toString(),
					params.toArray(), pageSize, pageNumber, "b",
					orderby);

		Integer totalRecords = ((Long) (buyerDao.queryObject(
				"select count(*) "+" "+hql.toString(),
				params.toArray()))).intValue();
		return new PageModel<Buyer>(buyers, totalRecords, pageSize,
				pageNumber);
	}
/*	@Override
	public void delete(String... usernames) {
		
		if(usernames!=null&&usernames.length>0)
		{
			
			for(String username:usernames)
			{
				Buyer buyer=buyerDao.findById(username);
				buyer.setVisible(Const.VISIBLE_FALSE);
				buyerDao.update(buyer);
				
			}
		}
		
	}*/
/*	@Override
	public void enable(String... usernames) {
		if(usernames!=null&&usernames.length>0)
		{
			for(String username:usernames)
			{
				Buyer buyer=buyerDao.findById(username);
				buyer.setVisible(Const.VISIBLE_TRUE);
				buyerDao.update(buyer);
				
			}
		}
		
	}*/
	
	public void delete(String... usernames)
	{
	
		buyerDao.delete(usernames);
		
	}
	public void enable(String... usernames)
	{
		buyerDao.enable(usernames);
		
	}
	@Override
	public void updatePassord(String username, String newpassword) {
		// TODO Auto-generated method stub
		buyerDao.updatePassord(username, newpassword);
	}

}


//该网站的全文搜索功能代码
import com.itcast.bean.product.ProductInfo;
import com.itcast.common.util.PageModel;
/**
 * 产品全文搜索
 * @author Administrator
 *
 */
public interface ProductSearchManager {

	public PageModel<ProductInfo> search(String key,Integer pageSize, Integer pageNumber);
}



import javax.annotation.Resource;

import org.compass.core.Compass;
import org.compass.spring.CompassDaoSupport;
import org.springframework.stereotype.Service;

import com.itcast.bean.product.ProductInfo;
import com.itcast.common.util.PageModel;
import com.itcast.search.product.ProductSearchManager;
import com.itcast.service.product.impl.ProductResultCallback;
@Service
public class ProductSearchManagerImpl extends CompassDaoSupport implements ProductSearchManager {


	@Resource
	public  void  setCompass0(Compass compass)
	{
		super.setCompass(compass);
	}
	
	@Override
	public PageModel<ProductInfo> search(String key, Integer pageSize,
			Integer pageNumber) {
		// TODO Auto-generated method stub
		return this.getCompassTemplate().execute(new ProductResultCallback(key,pageSize,
			pageNumber));
	}

}



 <!--相关搜索功能的配置,网上有一大堆 -->
    <bean id="compass" class="org.compass.spring.LocalCompassBean">
		<!-- 指定映射类方式 -->
		<property name="classMappings">
			<list>
				<value>com.itcast.bean.product.ProductInfo</value>
				<value>com.itcast.bean.product.Brand</value>
				<value>com.itcast.bean.product.ProductStyle</value>
				<value>com.itcast.bean.product.ProductType</value>
			</list>
		</property>
		 <property name="connection">
            <value>/lucene/indexes</value>
        </property>	
		<property name="compassSettings">
			<props>			
				<prop key="compass.engine.highlighter.default.formatter.simple.pre"><![CDATA[<font color='red'>]]></prop>
				<prop key="compass.engine.highlighter.default.formatter.simple.post"><![CDATA[</font>]]></prop>
				<prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
			</props>
		</property>
		<property name="transactionManager" ref="txManager" />
	</bean>
	
	
	<bean id="hibernateGpsDevice" class="org.compass.gps.device.hibernate.HibernateGpsDevice">
		<property name="name"><value>hibernateDevice</value></property>
		<property name="sessionFactory" ref="sessionFactory"></property>
		<property name="nativeExtractor">
		<bean class="org.compass.spring.device.hibernate.SpringNativeHibernateExtractor" />
		</property>
	</bean>	

   <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
		<property name="compass"><ref bean="compass" /></property>
		<property name="gpsDevices">
			<list>
				<bean class="org.compass.spring.device.SpringSyncTransactionGpsDeviceWrapper">
				<property name="gpsDevice" ref="hibernateGpsDevice" />
				</bean>
			</list>
		</property>
	</bean>


import java.util.ArrayList;
import java.util.List;

import org.compass.core.CompassCallback;
import org.compass.core.CompassException;
import org.compass.core.CompassHits;
import org.compass.core.CompassSession;

import com.itcast.bean.product.ProductInfo;
import com.itcast.common.util.PageModel;
import com.itcast.common.util.WebUtil;

public class ProductResultCallback implements CompassCallback<PageModel<ProductInfo>> {

	/**
	 * 要查找的内容
	 */
	private String key;
	/**
	 * 每页多少条数据
	 */
	private Integer pageSize;
	/**
	 * 当前第几页
	 */
	private Integer pageNumber;
	
	public ProductResultCallback(String key, Integer pageSize,
			Integer pageNumber) {
		this.key=key;
		this.pageSize=pageSize;
		this.pageNumber=pageNumber;
	}

	@Override
	public PageModel<ProductInfo> doInCompass(CompassSession session)
			throws CompassException {
		// TODO Auto-generated method stub
		if(key==null||key.trim().length()==0)
		{
		CompassHits hits=session.find(key);
		int  lastPageNumber=pageNumber+pageSize-1;
		List<ProductInfo> products=new ArrayList<ProductInfo>();
		if(lastPageNumber>hits.length()-1)  lastPageNumber=hits.length()-1;
		
		for(int i=pageNumber-1;i<=lastPageNumber;i++)
		{
			ProductInfo productInfo=(ProductInfo)hits.data(i);
			if(hits.highlighter(i).fragment("name")!=null) //处理高亮显示
				productInfo.setName(hits.highlighter(i).fragment("name"));
			productInfo.setDescription(WebUtil.HtmltoText(productInfo.getDescription()));
			products.add(productInfo);
		}
		
		return new PageModel<ProductInfo>(products, hits.length(), pageSize, pageNumber);
		}
		return new PageModel<ProductInfo>(null, 0, pageSize, pageNumber);
	}

}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics