zoukankan      html  css  js  c++  java
  • Hibernate之HQL语言查询

    创建HibernateUtils类,便于直接获取session

    package com.utils;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    public class HibernateUtils {
        private static SessionFactory sessionFactory;
        static {
            Configuration configuration = new Configuration().configure();
            //根据配置信息,创建SessionFactory对象
            sessionFactory = configuration.buildSessionFactory();
        }
    
        //获得session=>获得全新session
        public static Session openSession(){
            //获得session
            Session session = sessionFactory.openSession();
            return session;
        }
    
        //获得session=>获得与线程绑定的session
        public static Session getCurrentSession(){
            Session session = sessionFactory.getCurrentSession();
            return session;
        }
    
    
    
    
    }
    

      

    基本查询

         @Test
         public void test_01(){
             //获得session对象
             Session session = HibernateUtils.openSession();
             Transaction transaction = session.beginTransaction();
             String hql = "from Customer";
             Query query = session.createQuery(hql);
             List<Customer> list = query.list();
             System.out.println(list);
             transaction.commit();
             //transaction.rollback();
             session.close();
     
         }
    

      

    条件查询之使用'?'占位符

    @Test
         public void test_02(){
             Session session = HibernateUtils.openSession();
             Transaction transaction = session.beginTransaction();
             //-----------------------------------------
             String hql = "from Customer where cust_id = ?0";
             Query query = session.createQuery(hql);
             query.setParameter(0,3l);
             Customer cs = (Customer) query.uniqueResult();
     
             /**
              * 此处hql语句中的占位符若写成以下格式则会报错,貌似是因为Hibernate版本较高不支持
              *  String hql = "from Customer where cust_id = 0";
              *  Query query = session.createQuery(hql);
              *  query.setParameter(0,3l);
              *  Customer cs = (Customer) query.uniqueResult();
              */
     
             //-------------------------------------------
             System.out.println(cs);
             transaction.commit();
             session.close();
     
         }
    

      

    条件查询之使用':name'占位符

    @Test
         public void test_03(){
             //使用占位符 :name
             Session session = HibernateUtils.openSession();
             Transaction transaction = session.beginTransaction();
             String hql = "from Customer where cust_id = :cust_id";
             Query query = session.createQuery(hql);
             query.setParameter("cust_id",1l);
             Customer customer = (Customer) query.uniqueResult();
             System.out.println(customer);
             transaction.commit();
             session.close();
         }
    

      

     分页查询:

    @Test
        public void test_04(){
            Session session = HibernateUtils.openSession();
            Transaction transaction = session.beginTransaction();
            String hql = "from Customer";
            Query query = session.createQuery(hql);
            query.setFirstResult(0);//设置分页查询起始位置,下标从0开始
            query.setMaxResults(3);//设置一次查询多少条记录
            List<Customer> list = query.list();
            System.out.println(list);
        }
  • 相关阅读:
    原码/反码/补码详解
    树剖LCA讲解
    code vs 2166 Bessie的体重问题
    code vs 3376 符号三角形
    洛谷 P3078 [USACO13MAR]扑克牌型Poker Hands
    vjudge B
    POJ 1013 Counterfeit Dollar
    POJ 1008 Maya Calendar
    POJ 1006 Biorhythms
    POJ 3252 Round Numbers
  • 原文地址:https://www.cnblogs.com/kongieg/p/10648715.html
Copyright © 2011-2022 走看看