`

Hibernate完成常用的JDBC操作上

阅读更多

package com.mengya.dao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;

import com.mengya.entity.Stu;
import com.mengya.util.SessionFactoryUitl;

/**
 * Query query=this.GetSession().createQuery(hql); query.iterate()与query.list()
 * 效率是说query.iterate()比query.list()好,但做了N+1次查询 它们都是先从数据库的查询出主键值,然后根据主键值查询出对象,
 * 只是query.iterate()会根据主键值先从缓存当中找,若没有就从数据库查询 query.list()会根据主键值在数据库查询(N+1)
 */

public class StuDAO extends SessionFactoryUitl {
 private Transaction tran;

 /**
  * 添加
  */
 public void save(Stu stu) {
  try {
   tran = this.GetSession().beginTransaction();
   this.GetSession().save(stu);
   tran.commit();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
 }

 /**
  * 使用HQL全查询
  */
 public List getallbyHQL() {
  List arr = null;
  try {
   String hql = "from Stu";
   Query query = this.GetSession().createQuery(hql);
   arr = query.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 使用Criteria全查询
  */
 public List getallbyCriteria() {
  List arr = null;
  try {
   Criteria cri = this.GetSession().createCriteria(Stu.class);
   arr = cri.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 根据主键查询
  */
 public Stu getbyID(int id) {
  Stu stu = null;
  try {
   stu = (Stu) this.GetSession().get(Stu.class, id);
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return stu;
 }

 /**
  * 根据对象属性查询(使用Query)
  */
 public List getbyPropertyQuery(String name) {
  List arr = null;
  try {
   // 这里不能像SQL语一样select * from Stu where SName=:name,这是不对的。
   // Query query=this.GetSession().createQuery("from Stu where
   // SName=:name");
   // query.setString("name", name);
   // 或者
   Query query = this.GetSession().createQuery(
     "from Stu where SName=?");
   query.setString(0, name);
   arr = query.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 根据对象属性查询(使用Criteria)
  */
 public List getbyPropertyCriteria(String name) {
  List arr = null;
  try {
   Criteria cri = this.GetSession().createCriteria(Stu.class);
   Criterion c1 = Expression.eq("SName", name);
   cri.add(c1);
   arr = cri.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 查询部分属性
  */
 public List getProperty() {
  List arr = new ArrayList();
  try {
   String hql = "select s.SName,s.SSex from Stu as s";
   Query query = this.GetSession().createQuery(hql);
   List list = query.list();
   Iterator iter = list.iterator();
   while (iter.hasNext()) {
    Object[] obj = (Object[]) iter.next();
    Stu s = new Stu();
    s.setSName(obj[0].toString());
    s.setSSex(obj[1].toString());
    arr.add(s);
   }
  } catch (HibernateException e) {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 查询一个属性
  */
 public List getoneProperty() {
  List arr = new ArrayList();
  try {
   String hql = "select s.SName from Stu as s";
   Query query = this.GetSession().createQuery(hql);
   Iterator iter = query.iterate();
   while (iter.hasNext()) {
    Object obj = (Object) iter.next();
    Stu s = new Stu();
    s.setSName(obj.toString());
    arr.add(s);
   }
  } catch (HibernateException e) {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 查询一个对象一个属性值
  */
 public Object getonlyProprotyValue(int s_id) {
  Object obj = null;
  try {
   String hql = "select s.SName from Stu as s where s.SId=?";
   Query query = this.GetSession().createQuery(hql);
   query.setInteger(0, s_id);
   obj = query.uniqueResult();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return obj;
 }

 /**
  * Criteria多条件查询
  */
 public List getPropertyByCriteria(String name, int age) {
  List list = null;
  try {
   Criteria cri = this.GetSession().createCriteria(Stu.class);
   Criterion c1 = Expression.eq("SName", name);
   Criterion c2 = Expression.eq("SAge", age);
   cri.add(c1);
   cri.add(c2);
   list = cri.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return list;
 }

 /**
  * SQL查询
  */
 public List getallBYSQL() {
  List arr = null;
  try {
   String sql = "select {c.*} from stu as c";
   SQLQuery sqlquery = this.GetSession().createSQLQuery(sql);
   sqlquery.addEntity("c", Stu.class);
   arr = sqlquery.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 根据对象查询
  */
 public List getallByObject(Stu s) {
  List arr = null;
  try {
   String hql = "from Stu as s where s=:stuentity";
   // 或者
   // String hql="from Stu as s where s.SId=:stuentity";
   Query query = this.GetSession().createQuery(hql);
   query.setEntity("stuentity", s);
   arr = query.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 模糊查询
  */
 public List getallQueryLike(String name) {
  List arr = null;
  try {
   String hql = "from Stu as s where s.SName like :name";
   Query query = this.GetSession().createQuery(hql);
   query.setString("name", "%" + name + "%");
   // 不能
   // query.setString("name", "'%"+name+"%'");
   arr = query.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * Criteria模糊查询
  */
 public List getallCriteriaLike(String name) {
  List arr = null;
  try {
   Criteria cri = this.GetSession().createCriteria(Stu.class);
   Criterion c1 = Expression.like("SName", "%" + name + "%");
   cri.add(c1);
   arr = cri.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * Criteria范围查询
  */
 public List getallCriteriabetween(int age1, int age2) {
  List arr = null;
  try {
   Criteria cri = this.GetSession().createCriteria(Stu.class);
   Criterion c1 = Expression.between("SAge", age1, age2);
   cri.add(c1);
   arr = cri.list();
  } catch (HibernateException e) {
   this.CloseSession();
  } finally {
   this.CloseSession();
  }
  return arr;
 }

 /**
  * 统计函数
  */
 public int CountStu() {
  int count = 0;
  try {
   String hql = "select count(*) from Stu";
   Query query = this.GetSession().createQuery(hql);
   count = (Integer) query.uniqueResult();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return count;
 }

 /**
  * Criteria条件统计
  */
 public int CountStuByWhereInCriteria(int num1, int num2) {
  int count = 0;
  try {
   Criteria cri = this.GetSession().createCriteria(Stu.class);
   Criterion c1 = Expression.between("SAge", num1, num2);
   cri.add(c1);
   count = cri.list().size();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return count;
 }

 /**
  * 条件统计
  */
 public int CountByWhere(String sex) {
  int count = 0;
  try {
   Query query = this.GetSession().createQuery(
     "select count(*) from Stu where SSex=:sex");
   query.setString("sex", sex);
   count = (Integer) query.uniqueResult();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return count;
 }

 /**
  * 统计平均值
  */
 public float VagAge() {
  float vag = 0;
  try {
   Query query = this.GetSession().createQuery(
     "select avg(SAge) from Stu");
   vag = (Float) query.uniqueResult();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return vag;
 }

 /**
  * 求和函数
  */
 public int sumage() {
  int sum = 0;
  try {
   Query query = this.GetSession().createQuery(
     "select sum(SAge) from Stu");
   sum = (Integer) query.uniqueResult();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return sum;
 }

 /**
  * Criteria排序
  */
 public List getallCriteriaOrder() {
  List arr = null;
  try {
   Criteria cri = this.GetSession().createCriteria(Stu.class);
   cri.addOrder(Order.desc("SAge"));
   arr = cri.list();
  } catch (HibernateException e) {
   throw e;
  } finally {
   this.CloseSession();
  }
  return arr;
 }
}

2
0
分享到:
评论

相关推荐

    hibernate4.0项目与hibernate4.0全套JAR包

    Hibernate是一个非常优秀的,成熟的ORM框架,可以在不用写SQL语句的情况下,仅仅对持久化对象进行操作便可以完成对数据库的操作,可以使开发者更为专注于业务代码的编写,提高了开发效率,相对于JDBC而言,大大简化...

    Hibernate实战(第2版 中文高清版)

     1.3.2 用SQL/JDBC手工编写持久层   1.3.3 使用序列化   1.3.4 面向对象的数据库系统   1.3.5 其他选项   1.4 ORM   1.4.1 什么是ORM   1.4.2 一般的ORM问题   1.4.3 为什么选择ORM   1.4.4 ...

    Hibernate小例子

    使用Hibernate 必须首先提供这些基础信息以完成初始化工作,为后继操作做好准 备。这些属性在hibernate配置文件(hibernate.cfg.xml 或hibernate.properties)中加以设 定(参见前面“Hibernate配置”中的示例配置...

    Hibernate v3.2中文参考手册

    把你的JDBC驱动拷贝到lib/目录下,修改一下src/hibernate.properties,指定其中你的数据库的信息。进入命令行,切换到你的发行包的目录,输入ant eg(使用了Ant),或者在Windows操作系统中使用build eg。 <br>把...

    java/jdbc简单的ebank电子银行系统

    mySQL实现数据库的增删查改操作。 需求: 对单一账户进行创建、修改、删除、查询...持久层:负责数据的读取(jdbc,hibernate) 横向分层(业务层与持久层按抽象程度分): 抽象层 实现层 表现层不需要再进行横向分层

    Hibernate3.2官方中文参考手册

    把你的JDBC驱动拷贝到lib/目录下,修改一下src/hibernate.properties,指定其中你的数据库的信息。进入命令行,切换到你的发行包的目录,输入ant eg(使用了Ant),或者在Windows操作系统中使用build eg。 <br>把...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...

    Hibernate入门例

    Hibernate是一个比较流行的持久层框架,它对JDBC进行轻量级的封装,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。本例子为hibernate入门例子,操作access数据库。

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...

    ssh(structs,spring,hibernate)框架中的上传下载

     我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    12.3 使用Hibernate操作数据库的示例 12.3.1 创建数据库表 12.3.2 编写表对应的JavaBean 12.3.3 编写JavaBean对应的Xml 12.3.4 编写Hibernate的配置文件 12.3.5 编写并验证测试程序 12.4 Hibernate的配置文件 12.4.1...

    jdbc基础和参考

    executeUpdate:返回int类型的值,代表的是,操作执行完成后,受影响的数据库的行计数(针对于insert,update,delete) executeQuery:返回的是ResultSet ResultSet:类似于指针或者游标的东西,里边保存的不是所有的...

    基于Jsp的在线考试系统毕业设计论文

    在线考试系统用的是ssh稳定框架整合,为了保证用hibernate操作数据库不出错,所有的数据库表不是用mysql企业管理器或查询分析器来完成的,而是用hibernate的pojo类和hbm.xml文件导入的,然而,配置这些关联映射却很...

    iBATIS技术教程PPT和代码.rar

    程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 ...

    iBatis框架搭建用到的所有jar包

    程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 ...

    iBATIS 2.0 开发指南

    相对Hibernate和Apache OJB 等“一站式”ORM解决方案而...或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。

    ibatis实现过程

    相对Hibernate和Apache OJB 等“一站式”ORM解决方案而...或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执 行。

    iBatis开发资料

    相对Hibernate和Apache OJB 等“一站式”ORM解决方案而...或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执 行。

Global site tag (gtag.js) - Google Analytics