Hibernate分页查询和批量更新(学习笔记)

本文介绍了使用Hibernate进行分页查询的方法,包括设置开始记录位置和每页记录数。同时,还探讨了如何通过HQL执行批量更新和删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分页查询

批量updatadelete

 

 

分页查询

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);
}
 
}


 

 

批量updatadelete

 

 

Hibernate3之后,HQL新增了updatedelete语句,可以直接使用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);
}
 
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值