Hibernate的查询方式:
1、使用HQL方法实现的查询
//根据字符串查询。使用HQL方法实现的查询
public static List<User> query(String str){
Session s = null;
try {
s = HibernateUtil.getSession();
//String hql = "from User as user where user.name =?";
String hql = "from User as user where user.name =:name";
Query query = s.createQuery(hql);
//query.setString(0, name);
query.setFirstResult(0);//用这两条实现分页
query.setMaxResults(10);
query.setString("name", str);
List<User> list = query.list();//executeQuery();使用泛型。
//确定只有一条满足条件的记录时可以用以下的语句。
//User u = (User) query.uniqueResult();
//System.out.println(u);
/*for(User user:list){
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getBirthday());
}*/
return list;
} finally {
if (s != null) {
s.close();
}
}
}
2、使用Criteria条件查询方式实现的查询
//Criteria条件查询方式。
public static List<User> criQuery(String name){
Session s = null;
try {
s = HibernateUtil.getSession();
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.eq("name", name));//条件查询方法实现查询。
List<User> list = c.list();//executeQuery();使用泛型。
return list;
} finally {
if (s != null) {
s.close();
}
}
}
Hibernate工具类:
/**
* 文件名:HibernateUtil.java
* 作 者:zqding
* 时 间:2009-5-23
**/
package com.starit.toolsutil;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.starit.dao.User;
public final class HibernateUtil {
private static SessionFactory sessionFactory;
//静态代码块
static {
Configuration cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public HibernateUtil() {
}
public static Session getSession(){
return sessionFactory.openSession();
}
//向库表增加对象
public static void addObject(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 updateObject(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 deleteObject(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 getObject(Class clazz,Serializable id){
Session s = null;
try {
s = HibernateUtil.getSession();
Object object = s.get(clazz, id);
return object;
}finally{
if (s != null) {
s.close();
}
}
}
//从库表中以HQL语句的方式查询对象
public static List<User> getObject(String value){
Session s = null;
try {
s = HibernateUtil.getSession();
String hql = "from User as user where user.name = ?";
Query query = s.createQuery(hql);
query.setString(0, value);
List<User> list = query.list();//查询的记录有多个时
// User user = query.uniqueResult();//查询的结果中只有 一个时,可以用这个,它反回一个对象类型的。
return list;
}finally{
if (s != null) {
s.close();
}
}
}
}