疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Hibernate中Hql操作语句的用法


 

 
在我们需要处理数据量比较大的时候,如果依旧单个修改则会造成效率低下
 
所以,在这个时候,我们需要用到的就是批量修改,也就是Hql
 
同昨天的是同一个例子,使用user表,因为hibernate中已经将sql语句封装好,所以,我们使用它的createQuery
 
package dao;
 
 
import java.util.List;
 
 
import javax.management.Query;
 
 
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
 
 
/**
* 测试Hql
* @author Administrator
*
*/
public class TestHql {
private static SessionFactory sessionFactory=null;
private Session session=null;
Transaction transaction=null;
 
static {
try {
sessionFactory=new Configuration().configure().buildSessionFactory();
 
} catch (Exception e) {
// TODO: handle exception
}
}
/**
* 遍历
* @return
*/
public List queryUserList(){
List list=null;
session=sessionFactory.openSession();
String qsl="from User ";
try {
org.hibernate.Query query=session.createQuery(qsl);
list=query.list();
System.out.println(list);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
session.close();
}
return list;
 
 
}
/**
* 模糊查询
* @param keyName
* @return
*/
public List queryByName(String keyName){
List list=null;
session=sessionFactory.openSession();
String qsl="from User as user where user.name like:keyName";
try {
org.hibernate.Query query=session.createQuery(qsl);
query.setString("keyName","%"+keyName+"%");
list=query.list();
System.out.println(list);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
session.close();
}
return list;
 
}
 
/*
 
根据姓名,批量删除用户
public void delectUserByName(String name){
session=sessionFactory.openSession();
session.beginTransaction();
String sql="delete from User as user where user.name=?";
session.createQuery(sql).setString(0, name).executeUpdate();
//session.createQuery(sql).executeUpdate(); 
session.getTransaction().commit();
session.close();
}
public static void main(String[] args) {
TestHql t=new TestHql();
//t.queryByName("zh");
//t.queryUserList();
t.delectUserByName("");
}
}