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,返回pageCount public 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; @Transactional public abstract class BaseService implements BaseServiceInter { @Resource private 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 stub Query 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 stub Query 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 stub return null; } public Object findById(Class clazz, Serializable id) { // TODO Auto-generated method stub return this.sessionFactory.getCurrentSession().get(clazz, id); } public Object uniqueQuery(String hql, Object[] parameters) { // TODO Auto-generated method stub Query 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如果等于rowConunt int rowCount=Integer.parseInt(obj.toString()); return (rowCount-1)/pageSize+1; } public void delById(Class clazz,Serializable id) { // TODO Auto-generated method stub Session session=this.sessionFactory.getCurrentSession(); session.delete(this.findById(clazz, id)); } public void update(Object object) { // TODO Auto-generated method stub this.sessionFactory.getCurrentSession().update(object); } }
注: 配置@Transactoinal的目的就是让事务管理器,去接管该Service的事务