spring封装dao和service层

本文分享了一个基于Hibernate实现的CRUD操作及分页功能的具体实现方式,包括DAO层和服务层的具体代码细节,并探讨了如何进一步优化现有代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小案例基本没有写接口的习惯了。

封装的不好,还有好多地方要改进尤其是泛型,也请教各位老爷们如何改进,在此谢谢啦。

然后里面的HqlHelper和PageUtil是之前自己封装的分页和hql生成器类。


dao层:

@Repository
public class EntityDao{
	
	@Autowired
	private SessionFactory sessionFactory;

	public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }
	
	protected  Session getSession() {
        return sessionFactory.getCurrentSession();
    }
	
	public void flushSession(){
		getSession().flush();
	}
	
	public void clearSession(){
		getSession().clear();
	}
	
	public void save(Object object){
		getSession().save(object);
	}
	
	public void update(Object object){
		getSession().update(object);
	}
	
	public void delete(Object object){
		getSession().delete(object);
	}
	
	public int delete(String hql,List<Object> params){
		Query query = getSession().createQuery(hql);
		for(int i=0;i<params.size();i++){
			query.setParameter(i,params.get(i));
		}
		return query.executeUpdate();
	}
	
	public void merge(Object object){
		getSession().merge(object);
	}
	
	public void saveOrUpdate(Object object){
		getSession().saveOrUpdate(object);
	}
	
	public int executeUpdateSQL(String sql){
		Query query = getSession().createSQLQuery(sql);
		return query.executeUpdate();
	}
	
	public int executeUpdateHql(String hql){
		Query query = getSession().createQuery(hql);
		return query.executeUpdate();
	}
	
	public int executeUpdateHql(String hql,List<Object> params){
		Query query = getSession().createQuery(hql);
		for(int i=0;i<params.size();i++){
			query.setParameter(i,params.get(i));
		}
		return query.executeUpdate();
	}
	
	public Object uniqueResultHql(String hql){
		Query query = getSession().createQuery(hql);
		return query.uniqueResult();
	}
	
	public Object uniqueResultHql(String hql,List<Object> params){
		Query query = getSession().createQuery(hql);
		for(int i=0;i<params.size();i++){
			query.setParameter(i,params.get(i));
		}
		return query.uniqueResult();
	}
	
	public Object uniqueResultSQL(String sql){
		Query query = getSession().createSQLQuery(sql);
		return query.uniqueResult();
	}
	
	public List listHql(String hql){
		Query query = getSession().createQuery(hql);
		return query.list();
	}
	
	public List listHql(String hql,List<Object> params){
		Query q = getSession().createQuery(hql);
		for(int i=0;i<params.size();i++){
			q.setParameter(i,params.get(i));
		}
		return q.list();	
	}
	
	public List listSQL(String sql){
		Query query = getSession().createSQLQuery(sql);
		return query.list();
	}
	
	public List listHql(String hql,int curPage,int pageSize){
		Query q = getSession().createQuery(hql);
		return q.setFirstResult((curPage - 1) * pageSize).setMaxResults(pageSize).list();	
	}
	
	public List listHql(String hql,List<Object> params,int curPage,int pageSize){
		Query q = getSession().createQuery(hql);
		for(int i=0;i<params.size();i++){
			q.setParameter(i,params.get(i));
		}
		return q.setFirstResult((curPage - 1) * pageSize).setMaxResults(pageSize).list();	
	}
		
	/**
	 * in语句
	 * @param hql
	 * @param params
	 * @return
	 */
	public List listHqlIn(String hql,Object[] ary){
		Query q = getSession().createQuery(hql);
		q.setParameterList("in",ary);
		return q.list();	
	}
	

}


service层:

@Service
public class CommonService {

	@Autowired
	private EntityDao entityDao;
	
	public void flushSession(){
		entityDao.flushSession();
	}
	
	public void clearSession(){
		entityDao.clearSession();
	}
	
	@Transactional
	public Object get(String id,String className){
		if(!CommonUtil.checkABC_(id)){ id = "";}
		String hql = "select o from "+className+" o"+" where o.id = "+id;
		return entityDao.uniqueResultHql(hql);
	}
	
	@Transactional
	public Object get(Integer id,String className){
		String hql = "select o from "+className+" o"+" where o.id = "+id;
		return entityDao.uniqueResultHql(hql);
	}
	
	public void saveNoTransational(Object object){
		entityDao.save(object);
	}
	
	@Transactional
	public void save(Object object){
		entityDao.save(object);
	}
	
	@Transactional
	public void update(Object object){
		entityDao.update(object);
	}
	
	@Transactional
	public void delete(Object object){
		entityDao.delete(object);
	}
	
	@Transactional
	public int delete(String hql,List<Object> params){
		return entityDao.delete(hql, params);
	}
	
	@Transactional
	public int executeUpdateSQL(String sql){
		return entityDao.executeUpdateSQL(sql);
	}
	
	@Transactional
	public int executeUpdateHql(String hql){
		return entityDao.executeUpdateHql(hql);
	}
	
	@Transactional
	public int executeUpdateHql(String hql,List<Object> params){
		return entityDao.executeUpdateHql(hql, params);
	}
	
	@Transactional
	public Object uniqueResultSQL(String sql){
		return entityDao.uniqueResultSQL(sql);
	}
	
	@Transactional
	public Object uniqueResultHql(String hql){
		return entityDao.uniqueResultHql(hql);
	}
	
	@Transactional
	public Object uniqueResultHql(String hql,List<Object> params){
		return entityDao.uniqueResultHql(hql, params);
	}
	
	@Transactional
	public List listSQL(String sql){
		return entityDao.listSQL(sql);
	}
	
	@Transactional
	public List listHQL(String hql){
		return entityDao.listHql(hql);
	}
	
	@Transactional
	public List listHQL(String hql,List<Object> params){
		return entityDao.listHql(hql, params);
	}
	
	@Transactional
	public PageUtil listByHqlHelper(HqlHelper hqlHelper,PageUtil pageUtil){
		List rows = entityDao.listHql(hqlHelper.getHQL(), hqlHelper.getPatams(),pageUtil.getPageNo(),pageUtil.getPageSize());
		long total = (long)entityDao.uniqueResultHql(hqlHelper.getCountHQL(), hqlHelper.getPatams());
		pageUtil.setRows(rows);
		pageUtil.setTotal((int)total);
		return pageUtil;
	}
	
	@Transactional
	public List listHqlIn(String hql,Object[] ary){
		return entityDao.listHqlIn(hql,ary);
	}
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值