hql简单查询语句

session中get()方法只能通过id来查询结果;


hibernate工具类的完善(HibernateUtil):

public class HibernateUtil {
private static SessionFactory sessionFactory;
private HibernateUtil(){}
static{
Configuration cfg=new Configuration();
cfg.configure();
sessionFactory=cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}

/*
* 增加
*/
public static void add(Object entity){
Session s=null;
Transaction tx=null;
try{
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.save(entity);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}

/*
* 更新
*/
public static void update(Object entity){
Session s=null;
Transaction tx=null;
try{
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.update(entity);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}

/*
* 删除
*/
public static void delete(Object entity){
Session s=null;
Transaction tx=null;
try{
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.delete(entity);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
}
/*
* 根据id查询结果
*/
public static Object get(Class clazz,Serializable id){
Session s=null;
try{
s=HibernateUtil.getSession();
Object obj=s.get(clazz, id);
return obj;
}finally{
if(s!=null){
s.close();
}
}
}
}

通过名字查询的方法

static void query(String name){
Session s=null;
try{
s=HibernateUtil.getSession();
String sql="from UserTest as user where name=?";
Query query=s.createQuery(sql);
query.setString(0, name);
List<UserTest> list=query.list();
for(UserTest user:list){
System.out.println(user.getName());
}

}finally{
if(s!=null){
s.close();
}
}
}


 针对上述程序做如下 修改

 hql的命名参数

String sql="from  UserTest as user where user.name=:n";

query.setString("n",name);

实现分页的查询 

query.setFirstResult(200); 从第几条开始

query.setMaxResults(10); 一共查询几条



原文地址:https://www.cnblogs.com/GodFather001/p/2279239.html