hibernate查询方式

 1、OID(主键)查询 
             使用get方法    Customer customer=session.get(Customer.class,1l);
             使用load方法  Customer customer=session.load(Customer.class,1l);


 2、对象导航检索: hibernate根据一个已经查到的对象,获得其关联对象的一种查询方式
             LinkMan linkman=session.get(LinkMan.class,1l);
            Customer customer=linkman.getCustomer();
    
  3、HQL检索:一种面向对象的方式的查询语言,语法类似sql。通过session.createquery()
        3.1 hql简单查询:
                Query query=session.createQuery("from Customer"); //Customer是类名
               List<Customer> list=query.list();
        3.2 hql排序查询:默认就是升序  或者在查询里加上 类里的属性
                 List<Customer> list=session.createQuery("from Customer").list();
                 List<Customer> list=session.createQuery("from Customer order by cust_id").list();
           //设置降序排列使用desc 升序使用asc 
             List<Customer> list=session.createQuery("from Customer order by cust_id desc").list();
         3.3 hql条件查询:
                按位置绑定
                     单条件查询
                              Query query=session.createQuery("from Customer where cust_name=?");
                              query.setParameter(0,"ck");
                               List<Customer> list=query.list();
                      多条件查询
                              Query query=session.createQuery("from Customer where cust_source=? and cust_name like ?");
                                query.setParameter(0,"某某 ");
                               query.setParameter(1,"c%");
                               List<Customer> list=query.list();
                按名称绑定
                          Query query=session.createQuery("from Customer where cust_source= :aaa and cust_name like :bbb");
                         query.setParameter("aaa","某某 ");
                         query.setParameter("bbb","程%");
                          List<Customer> list=query.list();
             3.4  hql投影查询:查询对象的某个或某些属性
                     查询单个属性
                              List<Object> list=session.createQuery("select c.cust_name from Customer c").list();
                      查询多个属性
                               List<Object[]> list=session.createQuery("select c.cust_name,c.cust_source from Customer c").list();
                     查询多个属性,但将属性封装进对象中,需要将为对象创建构造方法
                          List<Customer> list=session.createQuery("select new Customer(cust_name,cust_source) from Customer").list();
              3.5  hql分组查询:
                             List<Customer> list=session.createQuery("select count(*) from Customer").list(); //如果有多条记录
                             Object object=session.createQuery("select count(*) from Customer").uniqueResult(); //如果只有一条记录
                      分组统计
                     List<Object[]> list=session.createQuery("select cust_source,count(*) from Customer group by cust_source").list();
                      for(Object[] objects:list){
                       System.out.println(Arrays.toString(objects));
                           }
               3.6    hql分页查询:
                           Query query=session.createQuery("from LinkMan");
                           query.setFirstResult(0);
                           query.setMaxResults(10); 
                           List<LinkMan> list=query.list();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值