hibernate+spring架构有感(二)

2014-11-24 01:03:52 · 作者: · 浏览: 1
@Override public Serializable save(T entity) { // TODO Auto-generated method stub return this.getSessionFactory().getCurrentSession().save(entity); } @Override public void update(T entity) { // TODO Auto-generated method stub this.getSessionFactory().getCurrentSession().saveOrUpdate(entity); } @Override public void delete(T entity) { // TODO Auto-generated method stub this.getSessionFactory().getCurrentSession().delete(entity); } @Override public void delete(Class entityClazz, Serializable entityId) { // TODO Auto-generated method stub delete(entityClazz, new Serializable[]{entityId}); } @Override public void delete(Class entityClazz, Serializable[] entityIds) { // TODO Auto-generated method stub // 遍历删除 for (Serializable serializable : entityIds) { delete(get(entityClazz, serializable)); } } @Override public List getAll(Class entityClazz) { // TODO Auto-generated method stub return find("select en from " + entityClazz.getSimpleName() + " en"); } @SuppressWarnings("rawtypes") @Override public Long getCount(Class entityClazz) { // TODO Auto-generated method stub List list = find("select count(*) from " + entityClazz.getSimpleName()); // 查询得到的实体总数,增加合法性的判断 if (list != null && list.size() == 1) { return (Long)list.get(0); } return (long) 0; } /** * 根据HQL语句查询实体 * @param hql * @return */ @SuppressWarnings("unchecked") protected List find(String hql) { return (List )this.getSessionFactory().getCurrentSession().createQuery(hql).list(); } /** * 根据带占位符参数HQL语句查询实体 * @param hql * @param params * @return */ @SuppressWarnings("unchecked") protected List find(String hql, Object...params){ // 创建查询 Query query = this.getSessionFactory().getCurrentSession().createQuery(hql); // 为包含占位符的HQL语句设置参数 for (int i = 0, len = params.length; i < len ; i++) { query.setParameter(i, params[i]); } return (List )query.list(); } /** * 使用HQL语句进行分页查询操作 * @param hql 需要查询的HQL语句 * @param pageNo 查询第pageNo页记录 * @param pageSize 每页需要显示的记录数 * @return */ @SuppressWarnings("unchecked") protected List findByPage(String hql, int pageNo, int pageSize) { // 创建查询 return this.getSessionFactory().getCurrentSession().createQuery(hql).setFirstResult((pageNo - 1) * pageSize).setMaxResults(pageSize).list(); } /** * 使用HQL语句进行分页查询操作 * @param hql 需要查询的HQL语句 * @param pageNo 查询第pageNo页记录 * @param pageSize 每页需要显示的记录数 * @param params 如果hql带占位符参数,params用于传入占位符 * @return */ @SuppressWarnings("unchecked") protected List findByPage(String hql, int pageNo, int pageSize, Object...params) { // 创建查询 Query query = this.getSessionFactory().getCurrentSession().createQuery(hql); for (int i = 0, len = params.length; i < len; i++) { query.setParameter(i, params[i]); } // 执行分页,并返回查询结果 return query.setFirstResult((pageNo - 1) * pageSize).setMaxResults(pageSize).list(); } public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } }
 上述代码有过学习经验的都应该搞定,此处就不再详加解释

 
                        

(2)特殊性的

由于项目为alubm,为了更加贴合项目本身,又有了,org.album.dao和org.album.dao.impl,以下是代码

UserDao.java,仅仅是由于项目实际对其的接口进行乐扩充

/**
 * User的Dao
 * @author administrator
 *
 */
public interface UserDao extends BaseDao
     
       {
	
	/**
	 * 根据用户名查找用户
	 * @param name	需要查找的用户的用户名
	 * @return		查找到的用户
	 */
	User findByName(String name);
}
     
接下来是,org.album.dao.impl.UserDaoHibernate.java

/**
 * UserDao组件的实现类代码
 * @author administrator
 *
 */
public class UserDaoHibernate extends BaseDaoHiberante4
     
       implements UserDao{

	@Override
	public User findByName(String name) {
		// TODO Auto-generated method stub
		List
      
        users = find("select u from User u where u.name =  ", name); if (users != null && users.size() == 1) { return users.get(0); } return null; } }
      
     

Service层:

在Service层中