maven项目Dao层优化
Posted gdpuzxs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven项目Dao层优化相关的知识,希望对你有一定的参考价值。
平时我们习惯一个实体类就对应一个dao类,这样做,增删改查都大同小异,只是实体类对象不一样而已,因此,我们可以把公用的方法抽取来,建立一个IBaseDao接口,如下:
public interface IBaseDao<T> {
//增加
public Serializable save(T o);
//删除
public void delete(T o);
//更改
public void update(T o);
//查找(单个)
public T get(String hql,Map<String,Object> params);
//查找列表
public List<T> find(String hql);
//根据条件查找
public List<T> find(String hql,Map<String,Object> params);
}
对应的实现类:BaseDao
@Repository("baseDao")
public class BaseDaoImp<T> implements IBaseDao<T> {
@Resource
private SessionFactory sessionFactory;
public Serializable save(T o) {
return sessionFactory.getCurrentSession().save(o);
}
public void delete(T o) {
sessionFactory.getCurrentSession().delete(o);
}
public void update(T o) {
sessionFactory.getCurrentSession().update(o);
}
@SuppressWarnings("unchecked")
public T get(String hql, Map<String, Object> params) {
Query q=sessionFactory.getCurrentSession().createQuery(hql);
if(params!=null&&!params.isEmpty()){
for(String key:params.keySet()){
q.setParameter(key, params.get(key));
}
}
List<T> l=q.list();
if(l!=null&&l.size()>0){
return l.get(0);
}
return null;
}
@SuppressWarnings("unchecked")
public List<T> find(String hql) {
return sessionFactory.getCurrentSession().createQuery(hql).list();
}
@SuppressWarnings("unchecked")
public List<T> find(String hql, Map<String, Object> params) {
Query q=sessionFactory.getCurrentSession().createQuery(hql);
if(params!=null&&!params.isEmpty()){
for(String key:params.keySet()){
q.setParameter(key, params.get(key));
}
}
return q.list();
}
}
每一个实体类对应的接口只要去继承基接口IBaseDao,而实体类去继承BaseDaoImp类 ,同时实现对应的接口即可,这样大大减少了代码量,如下:
public interface IUserDao extends IBaseDao<Tuser> {
}
@Repository("userDao")
public class UserDao extends BaseDaoImp<Tuser> implements IUserDao {
}
以上是关于maven项目Dao层优化的主要内容,如果未能解决你的问题,请参考以下文章