利用BDF2-hibernateDao实现数据的持久化操作

详细内容请参考 http://wiki.bsdn.org/pages/viewpage.action?pageId=29392984

需要在自己的dao中继承com.bstek.bdf2.core.orm.hibernate.HibernateDao这个类在ORM jar包当中。

1.数据的持久化范例(保存、删除和修改)---------------------------------------------------------

@DataResolver
publicvoid saveDemoUsers(Collection<DemoUser> users){
    Session session = this.getSessionFactory().openSession();
    try{
        for(DemoUser user : users) {
            EntityState state=EntityUtils.getState(user);
            if(state.equals(EntityState.NEW)) {
                session.save(user);
            }elseif (state.equals(EntityState.MODIFIED)) {
                session.update(user);
            }elseif (state.equals(EntityState.DELETED)) {
                session.delete(user);
            }
        }
    }finally{
        session.flush();
        session.close();
    }
}

2.查询--------------------------------------------------------------------------------------

2.1无条件不带分页的查询

@DataProvider
publicCollection<DefaultPosition> query1(){
    returnthis.query("from "+DemoUser.class.getName());
}


2.2有条件不带分页的查询

@DataProvider
publicCollection<DefaultPosition> query2(String username){
    Map<String,Object> map =newHashMap<String,Object>();
    String sql="from "+DomeUser.class.getName()+" du ";
    if(username!=null&&!"".equals(username)){
        map.put("username", username);
        sql+=" where du.username=:username";
    }
    returnthis.query(sql, map);
}
@DataProvider
publicCollection<DomeUser> query3(String username){
    Map<String,Object> map =newHashMap<String,Object>();
    String sql="from "+DomeUser.class.getName()+" du ";
    if(username!=null&&!"".equals(username)){
        map.put("username","%"+username+"%");
        sql+="where du.username like :username";
    }
    returnthis.query(sql, map);
}
@DataProvider
publicCollection<DemoUser> query4(String username){
    DetachedCriteria detachedCriteria=DetachedCriteria.forClass(DemoUser.class);
    if(username!=null&&!"".equals(username)){
        detachedCriteria.add(Restrictions.eq("username", username));
    }
    return(Collection<DemoUser>)this.query(detachedCriteria);
}

2.3无条件带分页的查询-------------------------------------------------------------------

@DataProvider
publicvoid query5(Page<DemoUser> page) throwsException{
    this.pagingQuery(page,"from "+DemoUser.class.getName(),"select count(*) from "+DemoUser.class.getName());
}

#.这个 pagingQuery方法的第三个参数需要统计表中所有的记录数

2.3有条件带分页的查询-------------------------------------------------------------------

@DataProvider
publicvoid query6(Page<DemoUser> page,String username) throwsException{
    Map<String,Object> map =newHashMap<String,Object>();
    String sql="from "+DomeUser.class.getName()+" du ";
    String sqlCount="select count(*) from "+DomeUser.class.getName()+" du ";
    if(username!=null&&!"".equals(username)){
        map.put("username", username);
        sql+=" where du.username=:username";
        sqlCount+=" where du.username=:username";
    }
    this.pagingQuery(page, sql,sqlCount,map);
}

可以看到这里的查询方法有四个参数:第二个和第三个参数分别是带条件的HQL语句以及统计执行带条件的HQL语句后的记录数。

@DataProvider
publicvoid query7(Page<DemoUser> page,String username) throwsException{
    DetachedCriteria detachedCriteria=DetachedCriteria.forClass(DemoUser.class);
    if(username!=null&&!"".equals(username)){
        detachedCriteria.add(Restrictions.eq("username", username));
    }
    this.pagingQuery(page, detachedCriteria);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值