ssh框架整合常用方法总结
BaseServiceInter.java:
package com.cz.base;import java.util.List;public interface BaseServiceInter {//声明一些常用的方法//1.通过id获取对象public Object findById(Class clazz,java.io.Serializable id);//2.查询方法 hql public List executeQuery(String hql,Object []parameters);//3.查询方法 带分页public List executeQueryByPage(String hql,Object []parameters,int pageNow,int PagesSize);//4.添加一个对象public void add(Object obj);//5.统一的执行hql->删除,修改 hql="update domain对象 where ?"public List executeUpdate(String hql,Object []parameters);//6.返回一个对象的操作public Object uniqueQuery(String hql,Object []parameters);//7.得到hql,返回pageCountpublic int queryPageCount(String hql,Object [] parameters,int pageSize);//8.根据id号删除对象public void delById(Class clazz,java.io.Serializable id);//9.通过Object修改public void update(Object object);}?
BaseService.java:
package com.cz.base;import java.io.Serializable;import java.util.Iterator;import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.transaction.annotation.Transactional;@Transactionalpublic abstract class BaseService implements BaseServiceInter {@Resourceprivate SessionFactory sessionFactory;public void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}public void add(Object obj) {this.sessionFactory.getCurrentSession().save(obj);}//统一查询方法(hql)public List executeQuery(String hql, Object[] parameters) {// TODO Auto-generated method stubQuery query=this.sessionFactory.getCurrentSession().createQuery(hql);//注入?值if(parameters!=null && parameters.length>0){for(int i=0;i<parameters.length;i++){query.setParameter(i, parameters[i]);}}return query.list();}//分页public List executeQueryByPage(String hql, Object[] parameters,int pageNow, int PagesSize) {// TODO Auto-generated method stubQuery query=this.sessionFactory.getCurrentSession().createQuery(hql);if(parameters!=null && parameters.length>0){for(int i=0;i<parameters.length;i++){query.setParameter(i, parameters[i]);}}//体现分页return query.setFirstResult((pageNow-1)*PagesSize).setMaxResults(PagesSize).list();}//统一的修改和删除public List executeUpdate(String hql, Object[] parameters) {// TODO Auto-generated method stubreturn null;}public Object findById(Class clazz, Serializable id) {// TODO Auto-generated method stubreturn this.sessionFactory.getCurrentSession().get(clazz, id);}public Object uniqueQuery(String hql, Object[] parameters) {// TODO Auto-generated method stubQuery query=this.sessionFactory.getCurrentSession().createQuery(hql);//给?赋值if(parameters!=null && parameters.length>0){for(int i=0;i<parameters.length;i++){query.setParameter(i, parameters[i]);}}return query.uniqueResult();}public int queryPageCount(String hql, Object[] parameters, int pageSize) {// TODO Auto-generated method stub//获取rowCount/*List list=this.executeQuery(hql, parameters);Iterator iteator=list.iterator();if(iteator.hasNext()){}*/Object obj=this.uniqueQuery(hql, parameters);//System.out.println("obj value= "+ obj);//obj如果等于rowConuntint rowCount=Integer.parseInt(obj.toString());return (rowCount-1)/pageSize+1;}public void delById(Class clazz,Serializable id) {// TODO Auto-generated method stubSession session=this.sessionFactory.getCurrentSession();session.delete(this.findById(clazz, id));}public void update(Object object) {// TODO Auto-generated method stubthis.sessionFactory.getCurrentSession().update(object);}}?
注:配置@Transactoinal的目的就是让事务管理器,去接管该Service的事务
?