博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate=====HQL实用技术
阅读量:5301 次
发布时间:2019-06-14

本文共 3927 字,大约阅读时间需要 13 分钟。

Hibernate支持三种查询语言:HQL查询、Criteria查询和原生SQL查询

HQL(hibernate Query Language,hibernate查询语言)是一种面向对象查询语言,其中没有表和字段的概念,只有类、对象和属性的概念

语法:

  form子句:form +全类名  /   form  +  类名(查询所有)

  select子句:select  dept.deptname from Dept

  where子句:from dept where deptName='sales';

 

HQL执行语句

   例子:form子句、select子句、where子句以及参数查询

    建立实体类

      

public class Dept {    private Integer deptno;    private String dname;    public Dept() {    }    public Dept(Integer deptno, String dname) {        this.deptno = deptno;        this.dname = dname;    }    public Integer getDeptno() {        return deptno;    }    public void setDeptno(Integer deptno) {        this.deptno = deptno;    }    public String getDname() {        return dname;    }    public void setDname(String dname) {        this.dname = dname;    }}

测试方法

package cn;import cn.happy.entity.Dog;import cn.hib.entity.Dept;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Before;import org.junit.Test;import java.util.List;/** * Created by a on 2017/8/20. */public class Test924 {    Configuration cfg;    SessionFactory factory;    Session session;    Transaction tx;    @Before    public void beforeTest(){        //创建配置对象        cfg=new Configuration().configure();        //根据配置对象创建SessonFactory        factory=cfg.buildSessionFactory();        //根据SessionFactory创建Session        session=factory.getCurrentSession();        //session=factory.openSession();        //开启事务        tx=session.beginTransaction();    }    @Test    public void testlist(){        String hql="from Dept";        Query query=session.createQuery(hql);        List
list=query.list(); for (Dept dept : list){ System.out.println(dept.getDname()); } } @Test public void selectSomeColumnFromTable(){ String hql="select dept.deptno,dept.dname from Dept"; Query query=session.createQuery(hql); List
list=query.list(); for(Object[] obj : list){ for (Object child : obj){ System.out.println(child); } } } @Test public void selectSomesColumnFromTable(){ String hql="select new Dept(dept.deptno,dept.dname) from Dept dept"; Query query=session.createQuery(hql); List
list=query.list(); for (Dept dept : list){ System.out.println(dept.getDname()); } } @Test public void selectSomeRecordsFromTable(){ String hql="from dept.deptno,dept.dname from Dept dept where dept.dname='RESEARCH'"; Query query=session.createQuery(hql); List
list=query.list(); for (Dept dept : list){ System.out.println(dept.getDname()); } } //案例:参数查询: 方案一:匿名占位符“?” @Test public void selectByConditionNiming(){ String hql="from Dept dept where dname=?"; Query query=session.createQuery(hql); query.setParameter(0,"RESEARCH"); List
list=query.list(); for(Dept dept : list){ System.out.println(dept.getDname()); } } //案例:参数查询:方案二: @Test public void selectByConditionParametername(){ String hql="from Dept dept where dname=:dname"; Query query=session.createQuery(hql); query.setParameter("dname","RESEARCH"); List
list=query.list(); for(Dept dept : list){ System.out.println(dept.getDname()); } } //案例:参数查询:方案三:name 参数名称绑定++++对象属性 @Test public void selectByConditionParameternameAndObjectAttribute(){ String hql="from Dept dept where dname=:dname"; Dept dd=new Dept(); dd.setDname("RESEARCH"); Query query=session.createQuery(hql); query.setProperties(dd); List
list=query.list(); for(Dept dept : list){ System.out.println(dept.getDname()); } }}

 

转载于:https://www.cnblogs.com/hfddz/p/7591478.html

你可能感兴趣的文章
AT1983 BBQ Hard 解题报告
查看>>
AT2000 Leftmost Ball 解题报告
查看>>
JZOJPJ-C 8/21题解
查看>>
JZOJ823PJ-C, TG-B
查看>>
Empty
查看>>
LINUX - 寄存器和堆栈
查看>>
LINUX - mmap()
查看>>
LINUX - 随机数
查看>>
JAVA - 方法
查看>>
C - dlopen dlsym
查看>>
LINUX - socket
查看>>
LINUX - 最简单的CS通信实例
查看>>
GO - 高级编程
查看>>
LINUX - Libevent
查看>>
display:table实现多列等高布局
查看>>
css实现定宽高比(非内容撑出)
查看>>
少儿编程 PARACRAFT
查看>>
Redis 发布订阅
查看>>
Redis 事务
查看>>
中国创新教育交流会杂感
查看>>