struts2 hibernate spring注解的整合(重写了巴巴运动网部门功能)
下面是Dao(泛型),及其Dao实现类
下面是一个User实体类的用—ao,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> extendsHibernateDaoSupport implements GenericDao<T, PK> {private Class<T> clazz;@Resourcepublic 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();}@Overridepublic void deleteAll(Collection<T> entities) {getHibernateTemplate().deleteAll(entities);}@SuppressWarnings("unchecked")@Overridepublic List<T> getList(final String hql, final Object[] params,final Integer pageSize,finalInteger 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")@Overridepublic 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();}});}@Overridepublic 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;@Componentpublic class BuyerDaoHibernate extends GenericDaoHibernate<Buyer, String> implementsBuyerDao {@Overridepublic 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());}}@Overridepublic void enable(String... usernames) {SetVisble(true,usernames);}@Overridepublic void updatePassord(String username, String newpassword) {// TODO Auto-generated method stubgetHibernateTemplate().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;@Servicepublic class BuyerManagerImpl implements BuyerManager {@Resourceprivate BuyerDao buyerDao;@Overridepublic void save(Buyer buyer) {buyer.setPassword(MD5.MD5Encode(buyer.getPassword()));buyerDao.save(buyer);}@Overridepublic 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;}@Overridepublic 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;}@Overridepublic Buyer load(String username) {return buyerDao.findById(username);}@Overridepublic 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);} elsebuyers = 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);}/*@Overridepublic 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);}}}*//*@Overridepublic 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);}@Overridepublic void updatePassord(String username, String newpassword) {// TODO Auto-generated method stubbuyerDao.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;@Servicepublic class ProductSearchManagerImpl extends CompassDaoSupport implements ProductSearchManager {@Resourcepublic void setCompass0(Compass compass){super.setCompass(compass);}@Overridepublic PageModel<ProductInfo> search(String key, Integer pageSize,Integer pageNumber) {// TODO Auto-generated method stubreturn this.getCompassTemplate().execute(new ProductResultCallback(key,pageSize,pageNumber));}}<!--相关搜索功能的配置,网上有一大堆 --> <bean id="compass" ref="txManager" /></bean><bean id="hibernateGpsDevice" ref="sessionFactory"></property><property name="nativeExtractor"><bean /></property></bean> <bean id="compassGps" init-method="start" destroy-method="stop"><property name="compass"><ref bean="compass" /></property><property name="gpsDevices"><list><bean 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;}@Overridepublic PageModel<ProductInfo> doInCompass(CompassSession session)throws CompassException {// TODO Auto-generated method stubif(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);}}