分页查询
批量updata和delete
分页查询
Query接口提供了以下两个用于分页显示查询结果的方法:
setFirstResult(int firstResult) |
设置开始记录的位置 |
setMaxResult(int maxResults) |
设置每页最大记录的条数 |
Queryquery = session.createQuery("FROM Student");
List list= query.setFirstResult(9)
.setMaxResult(10)
.lilst();
@Test
public void testPager(){ //调用方法进行参数传递
select12(2, 3); //第二页,显示3条记录(),总共有4条记录的话第四条就会到第二页中
}
public void select12(intpageNo,int pageSize){ //pageNo 当前的页数 pageSize每页显示的记录数
Transactiontx=null;
Sessionsession=null;
try{
session=HibernateUtils.getSession();
tx=session.beginTransaction();
Stringhql="from Student";
Queryquery=session.createQuery(hql).setFirstResult((pageNo-1)*pageSize).setMaxResults(pageSize);
/*在创建query对象实例接口以后createQuery(hql),可以设置每一页的查询记录开始的记录数setFirstResult((pageNo-1)*pageSize),
*再设置每页要显示的最大记录数setMaxResults(pageSize)*/
List<Student>list=(List<Student>)query.list();
for(Studentstu:list){
System.out.println(stu);
}
tx.commit();
}catch(HibernateExceptionhe){
if(tx!=null){
tx.rollback();
}
he.printStackTrace();
}finally{
HibernateUtils.closeSession(session);
}
}
批量updata和delete
Hibernate3之后,HQL新增了update与delete语句,可以直接使用HQL指定更新或删除。
Stringhql = "DELETE Student WHERE name LIKE :ln";
Queryquery = session.creteQuery(hql);
Int count= query.executeUpdate();
@Test
public void updateOrDelete(){
Transactiontx=null;
Sessionsession=null;
try{
session=HibernateUtils.getSession();
tx=session.beginTransaction();
Stringhql="update Account set password='123456' where id=:id";
/*Stringhql="delete from Account where id=:id"
*String hql="delete Account where id=:id" //delete是可省略from
*/
Queryquery=session.createQuery(hql);
query.setInteger("id",1);
int i=query.executeUpdate();//executeUpdate()方法返回当前sql语句影响的记录数
System.out.println(i);
if(i>0){
System.out.println("成功");
}else{
System.out.println("失败");
}
tx.commit();
}catch(HibernateExceptionhe){
if(tx!=null){
tx.rollback();
}
he.printStackTrace();
}finally{
HibernateUtils.closeSession(session);
}
}