zoukankan      html  css  js  c++  java
  • Hibernate=====HQL实用技术

    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<Dept> 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<Object[]>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<Dept> 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<Dept> 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<Dept> 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<Dept> 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<Dept> list=query.list();
            for(Dept dept : list){
                System.out.println(dept.getDname());
            }
        }
    
    
    }
  • 相关阅读:
    02-线性结构1 两个有序链表序列的合并
    ScSPM
    中国大学MOOC-陈越、何钦铭-数据结构-笔记
    01-复杂度1 最大子列和问题(剑指offer和PAT)
    Matlab中配置VLFeat
    循环队列实现
    对于利用pca 和 cca 进行fmri激活区识别的理解
    对于利用ica进行fmri激活区识别的理解
    利用spm提供的MoAEpilot听觉数据学习预处理以及单被试glm分析与统计推断
    fsl的feat软件分包使用笔记
  • 原文地址:https://www.cnblogs.com/hfddz/p/7591478.html
Copyright © 2011-2022 走看看