带分页功能的SSH整合,DAO层经典封装
2013-10-13 12:14
323 查看
任何一个封装讲究的是,使用,多状态。
Action:
任何一个Action继承分页有关参数类PageManage,自然考虑的到分页效果,我们必须定义下几个分页的参数。并根据这个参数进行查值。
然后在继承ServiceManage,ServiceManage类是用来 存放共用的东西:response,重要的是Service的get set
具体讲一下PageManage,
totalPages;//总页数
totalRecord;//总记录数
showRecordNum=DEFAULT_PAGE_NUM;//每页显示记录数
showPageNum;//当前页显示的记录数量
View Code
希望首页能再次通过,我修改下。
总结:带分页功能的SSH整合,DAO层经典封装
考虑前台,一条线的传到后台,然后分工必须明确。
DAO层的封装,可见java底层的魅力。
共同开发,共同努力。
Action:
任何一个Action继承分页有关参数类PageManage,自然考虑的到分页效果,我们必须定义下几个分页的参数。并根据这个参数进行查值。
然后在继承ServiceManage,ServiceManage类是用来 存放共用的东西:response,重要的是Service的get set
具体讲一下PageManage,
totalPages;//总页数
totalRecord;//总记录数
showRecordNum=DEFAULT_PAGE_NUM;//每页显示记录数
showPageNum;//当前页显示的记录数量
public class GenericHibernateDAO<T> extends HibernateDaoSupport implements GenericDAO<T>{ private Class<T> persistentClass; public GenericHibernateDAO(Class<T> persistentClass){ this.persistentClass=persistentClass; } public Class<T> getPersistentClass(){ return persistentClass; } public T findById(Integer id) { return (T)getHibernateTemplate().get(getPersistentClass(), id); } @SuppressWarnings("unchecked") public List<T> findByPage(final String hql, final int offset, final int pageSize){ if(hql == null){ return new ArrayList<T>(); } List<T> list= getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(final Session session) throws HibernateException, SQLException{ Query query=session.createQuery(hql); if(!(offset==0 && pageSize==0)){ query.setFirstResult(offset).setMaxResults(pageSize); } List<T> result = query.list(); return result; } }); return list; } @SuppressWarnings("unchecked") public List findByPageSQL(final String sql, final int offset, final int pageSize){ List list= getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(final Session session) throws HibernateException, SQLException{ Query query=session.createSQLQuery(sql); if(!(offset==0 && pageSize==0)){ query.setFirstResult(offset).setMaxResults(pageSize); } List result = query.list(); return result; } }); return list; } @SuppressWarnings("unchecked") public List<T> findByPage(final String hql, final Object value, final int offset, final int pageSize) { List<T> list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query=session.createQuery(hql).setParameter(0, value); if(!(offset==0 && pageSize==0)){ query.setFirstResult(offset).setMaxResults(pageSize); } List<T> result = query.list(); return result; } }); return list; } @SuppressWarnings("unchecked") public List<T> findByPage(final String hql, final Object[] values, final int offset, final int pageSize) { List<T> list = getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException{ Query query=session.createQuery(hql); for (int i = 0 ; i < values.length ; i++){ query.setParameter( i, values[i]); } if(!(offset==0 && pageSize==0)){ query.setFirstResult(offset).setMaxResults(pageSize); } List<T> result = query.list(); return result; } }); return list; } @SuppressWarnings("unchecked") public void updateObj(final String hql, final Object[] values) { getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException{ Query query=session.createQuery(hql); for(int i=0;i<values.length;i++){ query.setParameter( i, values[i]); } query.executeUpdate(); return null; } }); } public Integer getCount(String hql) { Integer count; //iterate方法与list方法的区别是list取出全部,iterator取出主键,迭代的时候才取出数据 count = ((Long)getHibernateTemplate().iterate(hql).next()).intValue(); System.out.println("大小"+ count); return count; } public T makePersitent(T entity) { getHibernateTemplate().saveOrUpdate(entity); return entity; } public void makeTransient(T entity) { getHibernateTemplate().delete(entity); } @SuppressWarnings("unchecked") public void makeTransientByIds(final String sql) { getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException{ Query query=session.createQuery(sql); query.executeUpdate(); return null; } }); } public T findById(Long id) { return (T) getHibernateTemplate().get(getPersistentClass(), id); } public void updateEntity(T entity) { this.getHibernateTemplate().update(entity); } @SuppressWarnings("unchecked") public List getListDataByHQL(String hql) { return getHibernateTemplate().find(hql); } /** * hql查询单个字段 * */ @SuppressWarnings("unchecked") public List<Object> findSingleDataByHQL(String hql) { return getHibernateTemplate().find(hql); } /** * hql查询多个字段 * */ @SuppressWarnings("unchecked") public List<Object[]> findSomeDataByHQL(String hql) { return getHibernateTemplate().find(hql); } }
View Code
希望首页能再次通过,我修改下。
总结:带分页功能的SSH整合,DAO层经典封装
考虑前台,一条线的传到后台,然后分工必须明确。
DAO层的封装,可见java底层的魅力。
共同开发,共同努力。
相关文章推荐
- SSH, 整合分页功能,连带DAO经典封装
- SSH整合之利用JSTL自定义标签制作DWR分页功能
- SSH整合之后解决Kindeditor图片上传功能失效的方案
- hibernate+pageBean实现分页dao层功能代码
- ssh整合开发中的分页方案(Srtuts2+Spring+Hibernate)
- 用ssh和bootstrap制作分页功能
- spring+springMVC+MyBatis 分页功能代码封装
- 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(三)
- MyEclipse 2017 整合SSH三大框架 到登录功能的实现(附源码)
- 用泛型与反射技术封装分页功能(JPA)
- SSH经典知识点整合
- SSH实现分页功能
- (经典)分页组件,3种不同样式的分页效果,数字,按钮,标题搜索等功能
- 哥发明的 一个ssh整合时解决dao层代码冗余问题的"一点儿不漏"型抽取法!!!!
- ssh实现分页功能
- ssh分页经典代码
- 配置SSH所需jar包地址 + SSH实现分页功能+ SSH基本框架配置
- Springboot整合pagehelper分页功能
- 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(四)
- 框架 day39-42 SSH整合练习项目CRM(配置文件,增删改查,ajax,上传/下载,分页,BaseDao/Action,MD5)