`
退役的龙弟弟
  • 浏览: 453720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate的hql帮助类

 
阅读更多

 

import java.io.Serializable;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.omg.Dynamic.Parameter;


public class HibernateHelper {
static SessionFactory sf=null;
static{
Configuration cf=new Configuration().configure();
sf=cf.buildSessionFactory();
}
//1、得到session。
public static Session getcurrentsession(){
Session session=sf.getCurrentSession();
return session;
}
public static Session opensession(){
Session session=sf.openSession();
return session;
}
//2、load提供一个返回一个对象的方法
public static Object findbyid(Class clazz, Serializable id){
Session s=HibernateHelper.getcurrentsession();
Transaction ts=s.beginTransaction();
Object obj=null;
try {
obj=s.load(clazz, id);
//提交事务
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if (ts!=null) {
ts.rollback();
}
e.printStackTrace();
}finally{
if (s!=null&&s.isOpen()) {
s.close();
}
return obj;
}
}
//3、统一的一个修改和删除(批量 hql) hql"delete upate ...??"
public static void executeUpdate(String hql,String [] parameters){
Session s=null;
Transaction tx=null;
try {
s=opensession();
tx=s.beginTransaction();
Query query=s.createQuery(hql);
//先判断是否有参数要绑定
if(parameters!=null&& parameters.length>0){
for(int i=0;i<parameters.length;i++){
query.setString(i, parameters[i]);
}
}
query.executeUpdate();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
// TODO: handle exception
}finally{
if(s!=null&&s.isOpen()){
s.close();
}
}
}
//4、统一的添加的方法
public static void save(Object obj){
Session s=null;
Transaction tx=null;
try {
s=opensession();
tx=s.beginTransaction();
s.save(obj);
tx.commit();
} catch (Exception e) {
if(tx!=null){
tx.rollback();
}
throw new RuntimeException(e.getMessage());
// TODO: handle exception
}finally{
if(s!=null && s.isOpen()){
s.close();
}
}
}
//5、只返回一个数据
public static String executeQuery_onepara(String hql,String parameter[]){
String s=null;
//创建session
Session session=HibernateHelper.getcurrentsession();
//创建事务
Transaction ts=session.beginTransaction();
try {
Query q=session.createQuery(hql);
if (parameter!=null&&parameter.length>0) {
for (int i = 0; i < parameter.length; i++) {
q.setString(i, parameter[i]);
}
}
s=(String)q.uniqueResult();
//提交事务
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if (ts!=null) {
ts.rollback();
}
e.printStackTrace();
}finally{
if (session!=null&&session.isOpen()) {
session.close();
}
}
return s;
}
//6、只返回一个对象
public static Object executeQueryForObject(String hql,String parameter[]){
Object o=null;
//创建session
Session session=HibernateHelper.getcurrentsession();
//创建事务
Transaction ts=session.beginTransaction();
try {
Query q=session.createQuery(hql);
if (parameter!=null&&parameter.length>0) {
for (int i = 0; i < parameter.length; i++) {
q.setString(i, parameter[i]);
}
}
o=q.uniqueResult();
//提交事务
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if (ts!=null) {
ts.rollback();
}
e.printStackTrace();
}finally{
if (session!=null&&session.isOpen()) {
session.close();
}
}
return o;
}
//7、分页

//提供提议分页
//通过参数绑定进行查询,
public static List executeQuery_bypage(String hql,String parameter[],int pagesize,int pagenow){
List list=null;
//创建session
Session session=HibernateHelper.getcurrentsession();
//创建事务
Transaction ts=session.beginTransaction();
try {
Query q=session.createQuery(hql);
if (parameter!=null&&parameter.length>0) {
for (int i = 0; i < parameter.length; i++) {
q.setString(i, parameter[i]);
}
}
q.setFirstResult((pagenow-1)*pagesize).setMaxResults(pagesize);
list=q.list();
//提交事务
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if (ts!=null) {
ts.rollback();
}
e.printStackTrace();
}finally{
if (session!=null&&session.isOpen()) {
session.close();
}
}
return list;
}
//通过参数绑定进行查询,
public static List executeQuery_common_currentSe_setParameter(String hql,String parameter[]){
List list=null;
//创建session
Session session=HibernateHelper.getcurrentsession();
//创建事务
Transaction ts=session.beginTransaction();
try {
Query q=session.createQuery(hql);
if (parameter!=null&&parameter.length>0) {
for (int i = 0; i < parameter.length; i++) {
q.setString(i, parameter[i]);
}
}
list=q.list();
//提交事务
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
if (ts!=null) {
ts.rollback();
}
e.printStackTrace();
}finally{
if (session!=null&&session.isOpen()) {
session.close();
}
}
return list;
}
}
分享到:
评论

相关推荐

    hibernateHQL关联查询

    ### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。...希望本文能帮助读者更好地理解和运用Hibernate HQL关联查询技术。

    HibernateHQL.zip_更新

    此压缩包中的`HibernateHQL.chm`文件很可能是Hibernate HQL的详细教程或参考手册,包含了HQL的语法、用法示例、最佳实践以及可能遇到的问题解决方案。它可以帮助开发者深入理解如何在实际项目中高效地使用HQL进行...

    hibernate hql where语句拼接工具类

    `HqlWhere.java`工具类通常会提供一些静态方法,帮助开发者动态地构建和拼接这些HQL WHERE子句。例如,该类可能包含以下方法: ```java public class HqlWhere { public static String appendCondition(String hql...

    Hibernate HQL.txt

    根据提供的文件信息,我们可以深入探讨Hibernate HQL(Hibernate Query Language)的相关知识点,特别是关于其查询功能、连接操作、条件过滤...通过本文的介绍,希望能够帮助读者更好地理解和掌握HQL的基本概念及用法。

    HibernateHql综合测试小程序

    本程序“HibernateHql综合测试小程序”是针对Hibernate中的HQL(Hibernate Query Language)进行的一系列功能测试,涵盖了二十多种不同的HQL语句,旨在帮助开发者深入理解和熟练运用Hibernate的查询能力。...

    Hibernate 课件_HQL

    ### Hibernate 课件_HQL 知识点解析 #### HQL查询 ...这些知识点涵盖了HQL的基本概念、查询方法、各种高级查询技巧以及Session的管理等方面,希望能够帮助大家更好地理解和掌握Hibernate的HQL查询技术。

    HibernateHQL实现前台翻页

    "HibernateHQL实现前台翻页"这一主题就是关于如何利用Hibernate的HQL(Hibernate Query Language)来实现数据库查询的分页功能,并结合Servlet(通常与MVC模式中的Controller层对应)和MySQL数据库来构建一个完整的...

    精通hibernate HQL语言

    总的来说,精通HQL是掌握Hibernate的关键步骤,它能帮助开发者以面向对象的方式进行数据检索,提高代码的可读性和可维护性。通过熟练运用HQL,开发者可以更好地驾驭Hibernate框架,实现高效的数据操作。

    hibernate hql基本操作

    ### Hibernate HQL 基本操作详解 #### 一、HQL简介 HQL,即Hibernate Query Language,是Hibernate...以上是对给定文件中的“hibernate HQL基本操作”的详细解析,希望能够帮助读者更好地理解和掌握HQL的相关知识点。

    weblogic12 下 org.hibernate.hql.ast.HqlToken

    在WebLogic 12环境中部署应用程序时,如果应用依赖于特定版本的Hibernate框架,并且该版本与WebLogic服务器默认提供的Hibernate版本存在差异,则可能会导致`org.hibernate.hql.ast.HqlToken`类冲突。此类冲突主要...

    Hibernate HQL详解.docx

    理解并熟练运用这些HQL特性,能够帮助开发者更高效地进行数据操作,避免直接操作SQL所带来的复杂性和潜在问题。在实际项目中,应结合Hibernate的其他功能,如缓存、事务管理等,以构建健壮的数据访问层。

    Hibernate-HQL-查询-Query资料

    在Hibernate中,HQL(Hibernate Query Language)是专为ORM设计的一种面向对象的查询语言,它允许开发者以类和对象的方式进行数据查询,而不是直接使用SQL。本资料主要涵盖了Hibernate HQL查询的基本概念、语法以及...

    HIBERNATE HQL

    通过上述介绍,我们可以看到HQL的强大之处在于它能够有效地处理复杂的对象关系,同时也提供了一些高级功能,如延迟加载和抓取策略,帮助优化数据访问性能。理解和掌握HQL将极大地提升开发者在Hibernate项目中的效率...

    超好用的hibernate查询工具类

    本篇将详细讲解一个“超好用的Hibernate查询工具类”,以及如何利用它来提升开发效率。 首先,我们需要理解Hibernate的基本概念。Hibernate是一种持久化框架,它可以将Java对象映射到数据库表,从而避免了编写大量...

    hibernate的hql语句

    10. **性能优化**:理解HQL并有效地利用它,可以帮助优化数据库操作性能。例如,通过合理使用`fetch`策略减少数据库访问次数,或者通过缓存机制提高查询速度。 总之,Hibernate的HQL语句为开发者提供了强大的面向...

    Hibernate的HQL与Criteria资料

    本资料主要探讨的是Hibernate中的两种查询方式:HQL(Hibernate Query Language)和Criteria API。 HQL,全称为Hibernate查询语言,是Hibernate提供的一种面向对象的查询语言,类似于SQL,但更加面向对象。HQL直接...

    hibernate中文帮助文档

    2.3. 映射查询:Hibernate支持EJBQL(Enterprise JavaBeans Query Language)和HQL(Hibernate Query Language)进行查询映射,以及本地化查询。这使得开发者可以使用面向对象的方式来编写查询语句。 2.4. ...

    weblogic10.3 org.hibernate.hql.ast.HqlToken报错问题

    使用IDE中的Hibernate插件或在线HQL验证工具可以帮助找到语法错误。 2. **升级Hibernate版本**:如果HQL查询没有问题,考虑升级WebLogic服务器中使用的Hibernate版本。这可能需要与WebLogic的版本相匹配,以避免...

    hibernate的大部分的工具类

    在这个“hibernate的大部分的工具类”压缩包中,我们很可能会找到一系列帮助简化Hibernate操作的实用工具类。这些工具类通常包括对数据操作的辅助方法、空值检查、分页处理以及HQL查询的通用分页功能。 首先,让...

    Hibernate帮助文档

    "Hibernate3帮助文档"提供了关于Hibernate3版本的详尽指南,包括其主要特性和用法。 文档中可能涵盖了以下几个关键知识点: 1. **配置**: Hibernate的配置文件(通常是hibernate.cfg.xml)是项目启动的基础,它...

Global site tag (gtag.js) - Google Analytics