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);
        }
  • 相关阅读:
    Insus Meta Utility
    The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
    Insus Binary Utility
    asp.net实现文件下载功能
    Column 'Column Name' does not belong to table Table
    程序已被编译为DLL,怎样去修改程序功能
    如何在Web网站实现搜索功能
    如何把数据流转换为二进制字符串
    Asp.net更新文件夹的文件
    如何显示中文月份
  • 原文地址:https://www.cnblogs.com/kongieg/p/10648715.html
Copyright © 2011-2022 走看看