Dao层抽取BaseDao公共方法

Dao层抽取BaseDao公共方法,第1张

概述设计IBseDao接口,定义公共的CRUD方法。   // IBaseDao 接口,定义公共的CRUD方法public interface IBaseDao<T> { public void add(T t); public void update(T t); public void delete(T t); public T getById

设计IBseDao接口,定义公共的CRUD方法。

 

// IBaseDao 接口,定义公共的CRUD方法public interface IBaseDao<T> {        public voID add(T t);    public voID update(T t);    public voID delete(T t);    public T getByID(int ID);    public List<T> getList(int startIndex,int pageSize);    public int getTotalCount();}
// BaseDaoImpl接口,实现公共的CRUD方法public class BaseDaoImpl<T> extends HibernateDaoSupport implements IBaseDao<T> {    private Class<T> entityClass;    // 子类的实例化需调用父类的无参构造方法,通过构造方法获取父类的泛型类型    public BaseDaoImpl() {        // this.getClass() --> 子类的class对象, getGenericSuperclass() ---> 获取父类的Type        ParameterizedType pType = (ParameterizedType) this.getClass().getGenericSuperclass();        // 获取第一个类型参数的真实类型,只有一个泛型参数,所以写0        // ParameterizedType 参数化类型, getActualTypeArguments(),返回表示此类型实际类型参数的Type对象的数组        entityClass = (Class<T>) pType.getActualTypeArguments()[0];    }    @OverrIDe    public voID add(T t) { // 增加        this.getHibernateTemplate().save(t);    }    @OverrIDe    public voID update(T t) {// 修改        this.getHibernateTemplate().update(t);    }    @OverrIDe    public voID delete(T t) {// 删除        this.getHibernateTemplate().delete(t);    }    @OverrIDe    public T getByID(int ID) { // 查询单个对象        return this.getHibernateTemplate().get(entityClass,ID);    }    @OverrIDe    public List<T> getList(int startIndex,int pageSize) { // 分页查询        return this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {            @OverrIDe            public List<T> doInHibernate(Session session) throws HibernateException {                query query = session.createquery("from " + entityClass.getname());                query.setFirstResult(startIndex);                query.setMaxResults(pageSize);                return query.List();            }        });    }    @OverrIDe    public int getTotalCount() { // 查询总记录数        return this.getHibernateTemplate().execute(new HibernateCallback<Integer>() {            @OverrIDe            public Integer doInHibernate(Session session) throws HibernateException {                query query = session.createquery("select count(*) from " + entityClass.getname());                Long count = (Long) query.uniqueResult();                return count.intValue();            }        });    }}

 

// IUserDao 继承 IBaseDao接口public interface IUserDao extends IBaseDao<User> {}

 

// UserDaoImpl 继承BaseDaoImpl类,实现 IUserDao接口public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao {    }

 

==========================================================================

Service层同理,设计IBseService接口,定义公共的CRUD方法。

@H_301_273@

 

// IBaseService接口,定义CRUD方法public interface IBaseService<T> {    public voID add(T t);    public voID update(T t);    public voID delete(T t);    public T getByID(int ID);    public List<T> getList(int startIndex,int pageSize);    public Page<T> getPage(String currentPage);}

 

// BaseServiceImpl类,实现IBaseService接口public abstract class BaseServiceImpl<T> implements IBaseService<T> {    //提供一个抽象方法,让子类返回对应的子类Dao    public abstract IBaseDao<T> getBaseDao();    @OverrIDe    public voID add(T t) {        getBaseDao().add(t);    }    @OverrIDe    public voID update(T t) {        getBaseDao().update(t);    }    @OverrIDe    public voID delete(T t) {        getBaseDao().delete(t);    }    @OverrIDe    public T getByID(int ID) {        return getBaseDao().getByID(ID);    }    @OverrIDe    public List<T> getList(int startIndex,int pageSize) {        return getBaseDao().getList(startIndex,pageSize);    }    @OverrIDe    public Page<T> getPage(String currentPage) {        Page<T> page = new Page<>(1,3);        if(currentPage!=null){            page.setCurrentPage(Integer.parseInt(currentPage));        }        int totalCount = getBaseDao().getTotalCount();        int totalPage = totalCount%page.getPageSize()==0?totalCount/page.getPageSize():totalCount/page.getPageSize()+1;        List<T> List = getList((page.getCurrentPage()-1)*page.getPageSize(),page.getPageSize());        page.setTotalPage(totalPage);        page.setList(List);        return page;    }}

 

// IUserService 继承 IBaseService接口public interface IUserService extends IBaseService<User> {}

 

// UserServiceImpl 继承 BaseServiceImpl类,实现IUserService 接口public class UserServiceImpl extends BaseServiceImpl<User> implements IUserService {        private IUserDao userDao;    public IUserDao getUserDao() {        return userDao;    }    public voID setUserDao(IUserDao userDao) {        this.userDao = userDao;    }    @OverrIDe    public IBaseDao<User> getBaseDao() {        return userDao;    }}
总结

以上是内存溢出为你收集整理的Dao层抽取BaseDao公共方法全部内容,希望文章能够帮你解决Dao层抽取BaseDao公共方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/1030991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存