Hibernate查询方式


Hibernate查询方式

  • 对象导航查询
    根据id查询某个客户,再查询这个客户里面所有的联系人

  • OID查询
    根据id查询某一条记录,返回对象

  • 3 HQL查询
    Query对象,写hql语句实现查询

  • 4 QBC查询
    Criteria对象

  • 5 本地sql查询
    SQLQuery对象,使用普通sql实现查询

对象导航查询

  1. 查询某个客户里面所有联系人过程,使用对象导航实现
//演示对象导航查询
    @Test
    public void testSelect() {
   
        Configuration configuration = new Configuration();
        configuration.configure();
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
   
            sessionFactory = configuration.buildSessionFactory();
            session = sessionFactory.openSession();
            //开启事务
            transaction = session.beginTransaction();

            //根据cid=1客户,再查询这个客户里面所有联系人
            Customer customer = session.get(Customer.class, 1);
            //再查询这个客户里面所有联系人
            //直接得到客户里面联系人的set集合
            //得到set集合,没有发送语句
            Set<LinkMan> linkman = customer.getSetLinkMan();

            // 发送语句
            System.out.println(linkman.size());

            //提交事务
            transaction.commit();
        }catch (Exception e){
   
            //回滚事务
            transaction.rollback();
        }finally {
   
            //关闭操作
            session.close();
            sessionFactory.close();
        }
    }

OID查询

  • 根据id查询记录
    调用session里面的get方法实现
    在这里插入图片描述

HQL查询

  1. hql:hibernate query language,hibernate提供一种查询语言,hql语言和普通sql很相似,区别:普通sql操作数据库表和字段,hql操作实体类和属性
  2. 常用的hql语句
    (1)查询所有: from 实体类名称
    (2)条件查询: from 实体类名称 where 属性名称=?
    (3)排序查询: from 实体类名称 order by 实体类属性名称 asc/desc
  3. 使用hql查询操作时候,使用Query对象
    (1)创建Query对象,写hql语句
    (2)调用query对象里面的方法得到结果

查询所有

  1. 查询所有客户记录
    (1)创建Query对象,写hql语句
    (2)调用query对象里面的方法得到结果
  2. 查询所有: from 实体类名称
//演示查询所有
    @Test
    public void testSelect1() {
   
        Configuration configuration = new Configuration();
        configuration.configure();
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
   
            sessionFactory = configuration.buildSessionFactory();
            session = sessionFactory.openSession();
            //开启事务
            transaction = session.beginTransaction();

            //1 创建query对象
            Query query = session.createQuery("from Customer");
            //2 调用方法得到结果
            List<Customer> list = query.list();

            for (Customer customer : list) {
   
                System.out.println(customer.getCid()+"::"+customer.getCustName());
            }

            //提交事务
            transaction.commit();
        }catch (Exception e){
   
            //回滚事务
            transaction.rollback();
        }finally {
   
            //关闭操作
            session.close();
            sessionFactory.close();
        }
    }

条件查询

  1. hql条件查询语句写法:
    from 实体类名称 where 实体类属性名称=? and实体类属性名称=?
  2. 代码
//演示条件查询
    @Test
    public void testSelect2() {
   
        Configuration configuration = new Configuration();
        configuration.configure();
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
   
            sessionFactory = configuration.buildSessionFactory();
            session = sessionFactory.openSession();
            //开启事务
            transaction = session.beginTransaction();

            //1 创建query对象
            //SELECT * FROM t_customer WHERE cid=? AND custName=?
            Query query = session.createQuery("from Customer c where c.cid=? and c.custName=?");

            //2 设置条件值
            // 向?里面设置值
            // setParameter方法两个参数
            // 第一个参数:int类型是?位置,?位置从0开始
            // 第二个参数:具体参数值
            //设置第一个?值
            query.setParameter(0, 3);
            //设置第二个?值
            query.setParameter(1, "腾讯");
            //3 调用方法得到结果
            List<Customer> list = query.list();

            for (Customer customer : list) {
   
                System.out.println(customer.getCustMobile()+"::"+customer.getCustName());
            }

            //提交事务
            transaction.commit();
        }catch (Exception e){
   
            //回滚事务
            transaction.rollback();
        }finally {
   
            //关闭操作
            session.close();
            sessionFactory.close();
        }
    }

模糊查询

  1. hql条件查询语句写法:
    from 实体类名称 where 实体类属性名称 like ?
  2. 代码
//演示模糊查询
    @Test
    public void testSelect3() {
   
        Configuration configuration = new Configuration();
        configuration.configure();
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction transaction = null;
        try{
   
            sessionFactory = configuration.buildSessionFactory();
            session = sessionFactory.openSession();
            //开启事务
            transaction = session.beginTransaction();

            //1 创建query对象
            Query query = session.createQuery("from Customer where custName like ?");

            
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值