hibernate 常用几种查询

在传统行业中,hibernate作为常用的传统ORM框架还是有很多的开发者在使用。个人觉得下面几点原因,

  1. 应对传统的关系型数据库,hibernate在处理数据之间的check约束上还是有他的优势。通过使用传统的el表达式在展现页面的时候发现还是比较方便的。
  2. hibernate 屏蔽了开发者在Dao层面的大部分问题,能够使开发者更加的去专注于业务的开发和逻辑的实现。这个过程包括自动的物理表之间的关系约束建立,实体的自动映射。
  3. hibernate 能够配置固定的数据库连接,使得程序在使用过程中提高一定的效率。

主要是通过在项目中的使用,简单的总结下hibernate的使用。

一.criteria对象的使用

Criteria criteria = dao.getSession().createCriteria(entity.getClass());

常用的有

like

%:和sql匹配占位符一致。

criteria.add(Restrictions.like(name,"%" +value+"%"));

in

in:与sql中in的作用是一致的。

criteria.add(Restrictions.in("roleid",roleid));

eq

eq:可以发现在el表达式中作用都是一致。

criteria.add(Restrictions.eq(name,value));

order

order排序字段,orderBy为实体的property

crit.addOrder(Order.asc(orderBy));

示例:

   Criteria critera = dao.getSession().createCriteria(UserInfo.class);
    critera.add(Restrictions.eq("useFlag", 1));
    critera.add(Restrictions.eq("account", account));
    critera.list();`

二.hql查询

应该是hibernate中较为常用的方式了,类似于sql,对于开发者来说掌握起来也较为容易,学习成本较低。

常用子句

From子句

From orders

orders:类名 常用的话,一般会在orders 加上一个别名。

From orders as ods

连接子句

连接子句,类似于sql中的左连接和右连接、内连接

From userinfo uif left join peoinfo pif on uif.peoinfoid=pif.id

select子句

select uif.name,uif.id from userinfo as uif

where子句

select uif.id ,uif.name from userinfo as uif where uif in (1,2)

分享地址:http://takeme.iteye.com/blog/1722522

三.sql查询

返回list集合

`List<Object[]> PartTimeJobInfoList = dao.getSession()
            .createSQLQuery(sql).setParameterList("ids", userId).list();`

返回唯一结果集

List

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 05:16:39

hibernate 常用几种查询的相关文章

hibernate的三种查询方式

hibernate的查询方式常见的主要分为三种: HQL, QBC, 以及使用原生SQL查询(Session的查询) 1)Query的查询:使用HQL语句或SQL语句完成查询 2)Criteria的查询:通过方法和类中属性的关系,来设置查询条件,完成查询. 3)Session的查询:按主键查询查询,方法为get或load 一.HQL查询 ? HQL(Hibernate Query Language)提供了丰富灵活的查询方式,使用HQL进行查询也是Hibernate官方推荐使用的查询方式. ? H

Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询

HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了类或者对象.其它的,包括一些查询函数(count(),sum()等).查询条件的设定等,全都跟SQL语法一样. 示例: Session session = SessionFactory.getCurrentSession(); User user = null; Transaction ts = s

hibernate 的几种查询——工作中使用到的

HQL是hibernate自己的一套查询语言,于SQL语法不同,具有跨数据库的优点.示例代码: // 获取检查单实例列表                 String tplSql = "FROM CheckFormTemplate t where t.type=-1 and t.id in("+ instanceIdStr +")";            Session session = getSession();            return sess

Hibernate学习-11-几种查询详解

1)Get/load主键查询 //1)主键查询 // Dept dept = (Dept)session.load(Dept.class,1); // Dept dept = (Dept)session.get(Dept.class,1); System.out.println(dept); 结果 Hibernate: select dept0_.deptId as deptId0_0_, dept0_.deptName as deptName0_0_ from t_dept dept0_ wh

hibernate实现多变联合查询

Hibernate主要支持两种查询方式:HQL查询和Criteria查询.前者应用较为广发,后者也只是调用封装好的接口. 现在有一个问题,就是实现多表连接查询,且查询结果集不与任何一个实体类对应,怎么解决呢? 举个例子: 现在有两个表,一个users用户表, 一个goods商品表,每个用户可以有多个商品,而一个商品只能对应一个用户. users表中的字段:userId,userName,telephone,address goods表中的字段:goodsId,goodsName,userId 现

java:Hibernate框架(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态)

1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati

Hibernate的Api以及三种查询方式

Hibernate  Api |-- Configuration       配置管理类对象 config.configure();    加载主配置文件的方法(hibernate.cfg.xml) 默认加载src/hibernate.cfg.xml config.configure("cn/config/hibernate.cfg.xml");   加载指定路径下指定名称的主配置文件 config.buildSessionFactory();   创建session的工厂对象 |--

hibernate的几种纯sql的查询方式

几种hibernate的纯SQL查询方式,查询和表无映射关系的pojo实体和表有映射关系的实体...... 1.getSession().createSQLQuery(sql).query.addScalar("productId", StandardBasicTypes.STRING)........可以直接返回pojo(非映射的实体) 2.getSession().createQuery("select new com.eastelsoft.Product(product

Mybatis模糊查询MySQL中记录的的常用三种方法

mybatis的模糊查询功能使用的很广泛,以MySQL数据库为例(不同的数据库,有些可能不支持) 常用的模糊查询有三种方法: 直接使用 % 拼接字符串,如 '%'#{name}'%' 或 "%"#{name}"%",单引号或双引号都可以. 使用concat(str1,str2)函数拼接 使用mybatis的bind标签 现在有数据库mybatis1中表users中有如下记录: User [id=2, name=bb, phone=13422222222, [emai