QBC检索和本地SQL检索

  • QBC 查询就是通过使用 Hibernate 提供的 Query By Criteria API 来查询对象,这种 API 封装了 SQL 语句的动态拼装,对查询提供了更加面向对象的功能接口

  • 本地SQL查询来完善HQL不能涵盖所有的查询特性

步骤

  1. 创建criteria 对象
  2. 设置各种检索条件
  3. 执行检索

and 与 or

@Test
    public   void TestQbcAnd(){
            Criteria criteria=session.createCriteria(Student.class);

            //使用conjunction来表示and,本身也是一个criterion对象
            Conjunction cons=Restrictions.conjunction();
            cons.add(Restrictions.like("name", "s", MatchMode.ANYWHERE));
            Grade grade=new Grade();

            //criteria 对象添加criterion 对象
            criteria.add(cons);
            //System.out.println(criteria.list());

            //使用disjunction表示or
            Disjunction dis=Restrictions.disjunction();
            dis.add(Restrictions.eq("gender", "男"));
            dis.add(Restrictions.isNull("grade"));

            criteria.add(dis);
            System.out.println(criteria.list());
    } 

projection 统计查询

    //统计查询
    @Test
    public   void TestQbcPrejunction(){
            Criteria criteria=session.createCriteria(Student.class);
            //用projection来统计查询
            criteria.setProjection(Projections.count("sid"));

            System.out.println(criteria.uniqueResult());
    } 

添加排序和设置翻页

//添加排序
        @Test
        public   void TestQbcOrder(){
                Criteria criteria=session.createCriteria(Student.class);
                //用projection来统计查询
                criteria.addOrder(Order.desc("name"));


                //设置翻页
                int pageNo=2;
                int pageSize=5;
                criteria.setFirstResult((pageNo-1)*pageSize);
                criteria.setMaxResults(pageSize);

                System.out.println(criteria.list());
        } 

本地sql查询

  • hql和qbc有局限。这时候就需要利用原生sql语句
@Test
    public   void TestQbcSql(){
        String sql="insert into student (name) Values('ok')";
        SQLQuery sqlQuery=session.createSQLQuery(sql);
        sqlQuery.executeUpdate();
    } 

hql 也可以执行更新和删除

@Test
    public   void TestQbcUpdate(){
        String hql="delete from Student s where s.name='ok'";
        Query query=session.createQuery(hql);
        query.executeUpdate();
    } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值