当继承HibernateDao的时候,我们可以直接这样写
Session session=this.getSessionFactory().openSession();
try{
for(DemoUser user:users){
EntityState state=Entityutils.getState(user);
if(state.equal(EntityState.NEW)){
session.save(user);
}else if(state.equal(EntityState.MODIFIED)){
session.update(user);
}else if(state.equals(EntityState.DELETED)){
session.delete(user);
}
}finally{
session.flush();
session.close();
}
}
还有一种不经常使用的方法doInHiberanteSession
public void saveDemoUser2(final Colllection<DemoUser> Users){
this.doInHiberateSession(new ISessionCallBack<object>(){
public Object doInSession(Session session){
for(DemoUser user:users){
EntityState state=EntityUtiles.getState(user){
if(state.equals(EnetityState.NEW)){
session.save(user);
}else if(state.equals(Entity.MODIFIED)){
session.update(user);
}else if(state.equals(Entity.DELETED)){
session.delete(user);
}
}
return null;
}
}
})
}
简单的查询所有的方法
@DataProvider
public Collection<DemoUser> query1() {
return this.query("from " + DemoUser.class.getName());
}
模糊查询的方法,
Map<String ,Object> map=new HashMap<String,Object>();
String sql="from " + DemoUser.class.getName()+" du"
if(username!=null &&!"".equals.(username)){
map.put("username","%"+username+"%");
sql+="where du.username like :username"
}
return this.query(sql,map);
带有DetachedCriteria条件的查询
@DataPrivider
public Collection<DemoUser> query4(String username){
DetachedCriteria detachedCriteria=DetachedCriteria.forClass(Demo.class);
if(username!=null&&!"".equals(username)){
detachedCritreia.add(Restrictions.eq("username",usename));
}
return (Collection<DemoUser>)this.query(detachedCriteria);
}
无添加的查询分页
@DataProvider
public void query5(Page<Demouser> page) throws Exception{
this.paginQuery(page,"from"+DemoUser.class.getName(),"select count(*) from "+DemoUser.class.getName());
}
带map参数的条件分页查询
@Dataprovider
public void query6(Page<Demouser> page,String username) throws Exception{
Map <String,Objct> map=new HashMap<String,Object>();
String sql="from"+DomeUser.class.getName()+" du ";
String sqlconut="select count(*) from "+DemoUser.class.getName()+" du";
if(username!=null&&!"".equals(username)){
map.put("username",username);
sql+="where du.username=:username";
sqlcount+="where du.username=:uername";
}
this.pagingQuery(page,sql,sqlcount,map);
}
带detachedCriteria参数的条件分页查询(相对来说比map简单)
@DataProvider
public void query7(Page<DemoUser> page,String username) throws Exception{
DetachedCriteria detachedCriteria=DetachedCriteria.forClass(DemoUser.class);
if(username!=null&&!"".equals(username)){
detachedCriteria.add(Restrictions.eq("username",username));
}
this.pagingQuery(page,detachedCriteria);
}
结合DataGrid的过滤工具栏实现分页查询
@DataPrivider
public void query8(Page<DemoUser> page,Criteria criteria) throws Exception{
detachedCriteria detachedCriteria=this.buildDetachedCriteria(criteria,DemoUser.class);
this.pagingQuery(page,detachedCriteria);
}