java dao层封装实例_自己对于DAO层的封装

在写程序时,有时每个模块都写一个DAO显然过于麻烦,因此,希望写一个通用的DAO,各个模块中的DAO,只需要继承它,然后再加上模块中的特殊逻辑即可。

注意:既然为了多个模块的操作,那么用到类类型的地方,都要定义为Object类型:

增加:

public void save(Object o) {

getHibernateTemplate().saveOrUpdate(o);

}

修改:

public void update(final Object entity) {

getHibernateTemplate().update(entity);

}

删除:

public void remove(Object o) {

getHibernateTemplate().delete(o);

}

多条件删除:

public void delete(String hqlDelete, Object[] parameter) {

Query query = this.getSession().createQuery(hqlDelete);

for (int i = 0; i < parameter.length; i++) {

query.setParameter(i, parameter[i]);

}

query.executeUpdate();

}

在sevice层只要:

Object[] params = new Object[2];

params[0] = synRecord.getRecordId();

params[1] = synRecord.getName();

//删除

synRecordDao.delete("delete from SynRecord s where s.recordId=? and s.name=?", params);

即可。

查找:

/**

* 分页查询

*

* @param hql 查询的条件

* @param offset 开始记录

* @param length 一次查询几条记录

* @return

*/

public List queryForPage(final String hql, final int offset, final int length) {

List list = getHibernateTemplate().executeFind(new HibernateCallback() {

public Object doInHibernate(Session session) throws HibernateException, SQLException {

Query query = session.createQuery(hql);

query.setFirstResult(offset);

query.setMaxResults(length);

List list = query.list();

return list;

}

});

return list;

}

/**

* 分页查询

*

* @param hql 查询的条件

* @return

*/

public int getAllRowCount(final String hql) {

Integer result = (Integer)getHibernateTemplate().execute(new HibernateCallback() {

public Object doInHibernate(Session session) throws HibernateException, SQLException {

String sql = " select count (*) " + removeSelect(removeOrders(hql));

Query query = session.createQuery(sql);

Long lCount = (Long)(query.list().get(0));

if (lCount == null)

lCount = new Long(0);

return lCount.intValue();

}

});

return result;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值