ssh框架调整常用方法总结

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,返回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的事务