下面是一个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 [email protected] 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 [email protected] * * @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); } }