Hibernate框架之路(四)hibernate查询方式

OID查询

    /**
     * OID 查询
     * 根据ID查询
     * 一对多查询
     */
    @Test
    public void test() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
//            查询客户所拥有的联系人;先查询客户 ID=1的客户;根据客户查询联系人
            User user = session.get(User.class, 1);
            //获得联系人的set集合
            Set<Link> link = user.getLink();
//            输出联系人个数
            System.out.println(link.size());
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }

HQL查询所有

    /**
     *查询所有
     *hql
     */
    @Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
//            查询所有客户    from 客户实体类名称
            Query query = session.createQuery("from User");
            List<User> list = query.list();
            for (User user : list) {
                System.out.println(user.getuId()+"\t"+user.getuName());
            }
            System.out.println("-------------------------");
            Query query2 = session.createQuery("from Link");
            List<Link> list2 = query2.list();
            for (Link link : list2) {
                System.out.println(link.getcId()+"\t"+link.getcName());
            }
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }

Hql条件查询

@Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            //创建query对象    from Cuastomer where user_id=? and user_name=?
            Query query = session.createQuery("from User c where c.uId=? and c.uName=?");
            /**
             * 向占位符里填写数据;占位符下标从0开始
             * 第一个参数为下标
             * 第二个参数为值
             */
            query.setParameter(0, 1);
            query.setParameter(1, "张三");
            List<User> list = query.list();
            for (User user : list) {
                System.out.println(user.getuTel());
            }
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }

hql模糊查询

    @Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            //创建query对象
            Query query = session.createQuery("from User c where c.uName like ?");
            /**
             * 向占位符里填写数据;占位符下标从0开始
             * 第一个参数为下标
             * 第二个参数为值
             */
            query.setParameter(0, "%张%");
            List<User> list = query.list();
            for (User user : list) {
                System.out.println(user.getuTel());
            }
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }

hql排序

    @Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            //创建query对象    desc 倒序     asc正序
            Query query = session.createQuery("from User order by uId asc");

            List<User> list = query.list();
            for (User user : list) {
                System.out.println(user.getuId());
            }
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }

HQL分页

    @Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            //创建query对象
            Query query = session.createQuery("from User");
            query.setFetchSize(0);//开始位置
            query.setMaxResults(3);    //每页显示个数
            List<User> list = query.list();
            for (User user : list) {
                System.out.println(user.getuId());
            }
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }

hql查询某个字段

    @Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            //创建query对象
            Query query = session.createQuery("select uId from User");
            List<Object> list = query.list();
            for (Object object : list) {
                System.out.println(object);
            }
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }

hql函数查询

    @Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            //创建query对象
            Query query = session.createQuery("select count(*) from User");
            Object obj = query.uniqueResult();
            Long lbj = (long) obj;
            int count =    lbj.intValue();
            System.out.println(count);
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }
时间: 2024-11-07 00:49:04

Hibernate框架之路(四)hibernate查询方式的相关文章

Hibernate的Api以及三种查询方式

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

[原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties   <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hiber

Hibernate框架之路(二)多对多多关系

1.配置实体类 package cn.pojo; import java.util.HashSet; import java.util.Set; public class User { /** * 用户表 */ private Integer user_id; private String user_name; private String user_pwd; private Set<Role> setRole = new HashSet<Role>(); public Integ

Hibernate框架之路(二)一对多关系

在下列案例中: 客户是一:联系人是多:客户可以拥有多个联系人:一个联系人只有一个客户 1.编写实体类 package com.pojo; import java.util.HashSet; import java.util.Set; public class User { private Integer uId; //客户ID(主表) 客户是一 private String uName; //名字 private String uTel; //手机 // 在客户的表中显示多个联系人 // 使用s

sessionFactory的创建和四种查询方式

1,关于sessionFactory的创建 5.0版本之前,下面这种方式在5.0及之后,可能会出问题,建议修改为5.0之后的方式 // 实例化Configuration Configuration configuration = new Configuration(); // 加载hibernate.cfg.xml文件 configuration.configure("/hibernate.cfg.xml"); // 创建SessionFactory StandardServiceRe

Hibernate框架 主配置文件(Hibernate.cfg.xml)待完善

数据库连接参数配置: <?xml version='1.0' encoding='UTF-8'?> <!--表明解析本XML文件的DTD文档位置,DTD是Document Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性.hibernate.sourceforge.net/hibernate-configuration-3.0dtd可以在Hibernate3.1.3软件包中的src\org\hibernate目录中找到此文件--

Mybatis框架学习(四)—查询缓存与spring的整合开发

1       项目整体目录 2       查询缓存 2.1     缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题. 2.1    mybatis持久层缓存 mybatis提供一级缓存和二级缓存 mybatis一级缓存是一个SqlSession级别,sqlsession只能访问自己的一级缓存的数据,二级缓存是跨sqlSession,是mapper级别的缓存,对于mappe

Hibernate(四) - HQL_QBC查询详解--抓取策略优化机制

Hibernate 的查询方式 在 Hibernate 中提供了很多种的查询的方式.Hibernate 共提供了五种查询方式. 1.Hibernate 的查询方式:OID 查询 OID检索:Hibernate根据对象的OID(主键)进行检索. ① 使用 get 方法 Customer customer = session.get(Customer.class,1l); ② 使用 load 方法 Customer customer = session.load(Customer.class,1l)