`
退役的龙弟弟
  • 浏览: 446108 次
  • 性别: 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;
}
}
分享到:
评论

相关推荐

    Hibernate 课件_HQL

    希望能对大家学习 Hibernate 提供帮助. 这是第三篇. 内容如下:HQL 查询;Query 接口及其主要方法;Select 子句;更新与删除;引用查询;联合查询;子查询;数据加载方式;Sql 查询;分页查询;管理 Session;ThreadLocal 接口...

    hibernate查询-hql教程

    hibernate查询-hql等教程,对于学习hibernate有很好的帮助。

    HQL Eclipse Plugins 配置教程

    不喜欢使用myEclipse的朋友可以尝试下 最近在项目中使用Hibernate,由于需要...附件中为本人配置的eclipse HQL Plugins截图 希望对大家有所帮助。 工具很好用,可以识别出HQL文的语法正确,并且解析为标准SQL语句。

    Hibernate中的查询:HQL、Criteria、原生SQl

    Hibernate中的查询:HQL、Criteria、原生SQl的Demo,希望可以帮助大家理解Hibernate查询。

    Hibernate 中文 html 帮助文档

    14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 ...

    hibernate annotation帮助文档

    2.4. Hibernate独有的注解扩展 2.4.1. 实体 2.4.2. 标识符 2.4.3. 属性 2.4.3.1. 访问类型 2.4.3.2. 公式 2.4.3.3. 类型 2.4.3.4. 索引 2.4.3.5. @Parent 2.4.3.6. 生成的属性 2.4.4. 继承 2.4.5. 关于...

    hibernate完全教程源代码

    hibernate 教程 源代码, 包括关系映射,hql和帮助文档

    Hibernate技术详解

    Hibernate技术详解 ,为初学者了解hql提供帮助

    JSP 开发之hibernate的hql查询多对多查询

    主要介绍了JSP 开发之hibernate的hql查询多对多查询的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    在Spring中集成Hibernate事务

    本文试图解释如何使用Spring来集成组件(包括组件...如果我们没有使用J2EE服务器,Spring可以帮助我们。Spring在集成组件服务和它们相关的事务关系的时候,是基于控制倒置(InversionofControl)的。 集成(Assembling

    hibernate3中方帮助方档(CHM)

    由浅入深的介绍hibernate3,很适合初学者。。。

    关于Hibernate3中文查询出错问题的解决

    关于Hibernate3中文查询出错问题的解决,相信有不少朋友也遇过这种问题,希望对大家有所帮助

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9....

    Hibernate教程

    15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by...

    Snack_Hibernate.rar

    里面五张表,分别是小吃表,小吃类表,用户表,用户评价表,以及小吃用户关系表。 其中小吃表和小吃类表关系多对...其实也是我最近学习hibernate后的一个学习记录吧。 希望里面的一对多,多对多的细节可以帮助到新手。

    Hibernate查询映射试验

    hibernate映射查询的一些练习,应该有些帮助..

    其他类别Struts+Hibernate实现MVC-strutsmvc.rar

    Hibernate提供了一套丰富的API和查询语言(HQL),使得开发者可以方便地进行数据库操作,而无需关心底层的SQL细节。通过整合Struts和Hibernate框架,这个资料包为开发者提供了一个强大的工具集,使得他们能够快速地...

    hibernate的配置使用和各种查询

    根据自己学习总结的一些hibernate资料,包括全面介绍关系配置和各种查询,都有详细的说明。还有自己写的一些小dome。希望对初学者有帮助!

    hibernate3.04中文文档.chm

    15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order by...

    Hibernate参考文档

    14. HQL: Hibernate查询语言 14.1. 大小写敏感性问题 14.2. from子句 14.3. 关联(Association)与连接(Join) 14.4. join 语法的形式 14.5. select子句 14.6. 聚集函数 14.7. 多态查询 14.8. where子句 14.9. 表达式 ...

Global site tag (gtag.js) - Google Analytics