Hibernate常见的查询方式--超级大干货

本文介绍了Hibernate常用的几种查询方式,包括HQL查询、HibernateTemplate查询、QBC查询和SQL查询。详细说明了每种查询方式的步骤、使用时机及示例,如HQL查询的创建语句、执行及参数设置,HibernateTemplate查询的封装操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇主要介绍HIbernate常用的几种查询方式
HQL查询---------Query/session.createQuery(hql)
HibernateTemplate查询---------getHibernateTemplate.find(hql)
OBC查询----------Criteria/session.createCriteria(.class)
SQL查询-----------SQLQuery/session.createSQLQuery(sql)

HQL查询
最常见的查询方式:
大致步骤:
1.创建hql查询语句
2,通过Query对象,执行hql语句
3,若查询语句带有占位符或其他参数,那么就是用setObjectType()或setParameter()

最简单的查询:

String  hql="select name from  User  where user='cc' and age>20";
Query  query=session.createQuery(hql);
List<User> list=query.list();

以占位符方式进行查询

//编写查询语句,该from后面是对应的实体类,不是表名
   String hql="from User  where user=? and age>?";
   //创建查询对象
   Query query=session.createQuery(hql);
  // //占位符从0开始计算,同时将查询结果转化为list对象
    List<User> list= query.setString(0, "cc").setInteger(1,20).list();
   //通过设置参数形式
    List<User> list=query.setParameter(0,"cc").setParameter(1,20).list();

以别名参数进行查询

  使用别名参数进行查询,以:别名参数
  String hql="from User  where user=:name and age>:age";
   //创建查询对象
   Query query=session.createQuery(hql);
   //传入查询参数,并执行查询&查询结果转化为list对象
    List<User> list=query.setString("name","cc").lsetInteger("age",20).ist();
    //通过设置参数形式
    List<User> list=query.setParameter("name","cc").setParameter("age",20).list();

分页查询
主要由两个参数,从哪个数据开始显示,每页显示多少个

//查询第一页的数据,每页显示10个数据
String  hql="from User";
Query  query=session.createQuery(hql);
//设置从哪个数据开始显示(page-1)*每页显示数
query.setFirstResult(0);
query.setMaxResult(10);
List<User> list=query.list();
//查询第4页的数据,每页显示8个数据//从第24个数据开始显示,
String hql="from User"
Query query=session.createQuery(hql).setFirstResult(24).setMaxResult(8);
List<User> list=query.list();

HibernateTemplate查询,该查询时HIbernate为了简化相关的增删改查操作,而封装了数据库的一些通用操作,可以直接使用,使用时机:由Spring整合Hibernate&由Spring对Hibernate相关的操作对象进行封装&对应dao层实现类必须继承HibernateDaoSupport:

1继承HibernateDaoSupport
2编写hql查询语句
3通过getHibernateTemplate().find()执行查询

public  class FindUser extends HibernateDaoSupport{
public  String FindUserName(){
String hql="select  username from User where username='cc'";
List<User> list=this.getHibernateTemplate().find(hql);
//判断该数据库是否存在对应的用户名
if(list.size>0)
//存在则返回该查询结果
return list.get(0).value();
//不存在则返回null
return null;
}

find(String queryString,object value);

String hql="select username from User where sid=?"
List<User> list=this.getHibernateTemplate().find(hql,123);

find(String queryString,Object[] values)

String hql="from User where username=? and uis=?"
List<User> list=getHibernateTemplate().find(hql,new String[]{"cc","123"});

使用别名参数进行查询
findByNameParam(String queryString , String paramName , Object value)
其中value是paramname的值

String  hql="from User where name=:name";
String paramname="name";
String value="cc"
List<User> list=this.getHibernateTemplate(hql,paramname,value);

QBC:对象化查询Criteria方法
1新建查询对象Criteria,且引入对应的实体类(与数据库对应的表具有映射关系)
2执行查询
3若该查询语句中需要传入对应参数则调用add方法添加约束条件
且该约束条件主要有eq(=),gt(>),lt(<),or

查询所有

Criteria  cc=session.createCriteria(User.class);//User实体类
List<User> list=cc.list();

带参数查询

//查询名字为cc的所有数据
Criteria  cc=session.createCriteria(User.class);
//给实体类对应的属性变量赋值
cc.add(Restrictions.eq("userName","cc"));
List<User> list=cc.list();

//查询名字为cc年龄超过20岁的男性
//多个条件
Criteria cc=sessino.createCriteria(User user);
//给实体类的属性赋值
cc.add(Restrictions.eq("name","cc");
cc.add(Restrictions.gt("age",20);
cc.add(Restrictions.eq("sex","男");
List<User> list=cc.list();

分页

//查询第一页的数据,每页显示10个数据
Criteria cc=session.createCriteria(User.class);
cc.setFirstResult(0);
cc.setMaxResult(10);
List<User> list=cc.list();

SQL查询(适用情况:不熟悉HQL的朋友,又不打算转数据库平台的朋友,万能方法 缺点:破坏跨平台,不易维护,不面向对象。
因为这个方法不常用,所以就只写这一个简单例子了
1开启事务
2编写sql
3执行查询
4提交事务

session.beginTranscation();
String sql="select username from  User";
List list=session.createSQLQuery(sql).list();
session.getTranscation().commit();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值