Web开发 | Hibernate - 10.Hibernate框架的查询方式之Criteria查询接口

一、Criteria 查询接口(做条件查询非常合适)

  1. QBC:Query By Criteria – 按条件进行查询

  2. QBC 查询方式的使用

    • 先创建查询的接口
      Criteria c = session.createCriteria(User.class);

    • 设置查询的条件
      criteria.add(Restrictions.gt("age", 10));

    • 查询数据
      List<User> list = criteria.list();

二、Criteria查询接口不带条件查询

1、新建 TestQBC 类
  /Hibernate5_d02_c05/src/hibernate/test/TestQBC.java
程序代码如下:

package hibernate.test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import hibernate.domain.User;
import hibernate.util.HibernateUtils;

/*
 * QBC的查询测试
 */
public class TestQBC {
    /*
     * 不带条件的查询
     */
    @Test
    public void test1(){
        Session session = HibernateUtils.getCurrentSession(); 
        Transaction tr = session.beginTransaction();
        //1.创建QBC查询接口
        Criteria c = session.createCriteria(User.class);
        //2.查询所有数据
        List<User> users = c.list();
        for (User user : users) { 
            System.out.println(user);
        }
        tr.commit();
        //session 不用关闭
    }
}

2、为User 类添加toString()方法
  /Hibernate5_d02_c05/src/hibernate/domain/User.java
程序代码如下:

...
public class User implements Serializable{
    ...
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}

3、运行项目

运行效果
运行效果

三、Criteria查询接口条件查询

以下操作均在/Hibernate5_d02_c05/src/hibernate/test/TestQBC.java中修改。


1、like 模糊查询

程序代码如下:

...
public class TestQBC {
    ...
    /*
     * like 模糊查询
     */
    @Test
    public void test2(){
        //1.创建QBC查询接口
        Session session = HibernateUtils.getCurrentSession();
        Transaction tr = session.beginTransaction();
        Criteria c = session.createCriteria(User.class);
        //2.设置条件
        //名字中带熊的记录
        c.add(Restrictions.like("name", "%熊%"));
        //3.查询所有数据
        List<User> users = c.list();
        for (User user : users) {
            System.out.println(user);
        }
        tr.commit();
        //session 不用关闭
    }
}

运行效果
运行效果


2、and 多条件查询

程序代码如下:

...
public class TestQBC {
    ...
    /*
     * and 多条件查询
     */
    @Test
    public void test3(){
        //1.创建QBC查询接口
        Session session = HibernateUtils.getCurrentSession();
        Transaction tr = session.beginTransaction();
        Criteria c = session.createCriteria(User.class);
        //2.设置条件
        //设置第一个条件:名字中带熊的记录
        //第一个参数是 javabean中的属性
        //第二个参数是要设置的值
        c.add(Restrictions.like("name", "%熊%"));
        //设置第二个条件:年龄大于10
        c.add(Restrictions.gt("age",10));
        //设置第 N个条件
        //3.查询所有数据
        List<User> users = c.list();
        for (User user : users) {
            System.out.println(user);
        }
        tr.commit();
        //session 不用关闭
    }
}

运行效果
运行效果


3、or 多条件查询

程序代码如下:

...
public class TestQBC {
    ...
    /*
     * or 多条件查询
     */
    @Test
    public void test4(){
        //1.创建QBC查询接口
        Session session = HibernateUtils.getCurrentSession();
        Transaction tr = session.beginTransaction();
        Criteria c = session.createCriteria(User.class);
        //2.设置条件 
        //名字带熊或年龄大于10岁
        c.add(Restrictions.or(Restrictions.like("name", "%熊%"),
                Restrictions.gt("age", 10)));
        //3.查询所有数据
        List<User> users = c.list();
        for (User user : users) {
            System.out.println(user);
        }
        tr.commit();
        //session 不用关闭
    }
}

运行效果
运行效果


4、between..and 多条件查询

程序代码如下:

...
public class TestQBC {
    ...
    /*
     * between..and 多条件查询
     */
    @Test
    public void test5(){
        //1.创建QBC查询接口
        Session session = HibernateUtils.getCurrentSession();
        Transaction tr = session.beginTransaction();
        Criteria c = session.createCriteria(User.class);
        //2.设置条件 
        //年龄在2030之间的记录
        c.add(Restrictions.between("age", 20, 30));
        //查询所有数据
        List<User> users = c.list();
        for (User user : users) {
            System.out.println(user);
        }
        tr.commit();
        //session 不用关闭
    }
}

运行效果
运行效果


5、分页查询

程序代码如下:

...
public class TestQBC {
    ...
    /*
     * 分页查询
     */
    @Test
    public void test6(){
        //1.创建QBC查询接口
        Session session = HibernateUtils.getCurrentSession();
        Transaction tr = session.beginTransaction();
        Criteria c = session.createCriteria(User.class);
        //2.设置条件
        //参考mysql的分页  limit  index  size
        //index 索引从哪一条记录开始
        //size 每页条数
        c.setFirstResult(2);//第三条记录
        c.setMaxResults(2);//每页数据
        //3.查询所有数据
        List<User> users = c.list();
        for (User user : users) {
            System.out.println(user);
        }
        tr.commit();
        //session 不用关闭
    }
}

运行效果
运行效果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值