一、Criteria 查询接口(做条件查询非常合适)
QBC:Query By Criteria – 按条件进行查询
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、运行项目
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/aa32ea7acf5256f8ca30965a3f8cf4a7.jpeg)
运行效果
三、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 不用关闭
}
}
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/eafaa8695c52ff0867e80c02457ff1db.jpeg)
运行效果
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 不用关闭
}
}
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/8489961b1b165442d9469a71970c319b.jpeg)
运行效果
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 不用关闭
}
}
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/621945a8ab25b8c30a61229d081e2007.jpeg)
运行效果
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.设置条件
//年龄在20和30之间的记录
c.add(Restrictions.between("age", 20, 30));
//查询所有数据
List<User> users = c.list();
for (User user : users) {
System.out.println(user);
}
tr.commit();
//session 不用关闭
}
}
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/1421a2fa1ed72b4bda2bff7619f6270c.jpeg)
运行效果
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 不用关闭
}
}
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/09f2a36a3534c27e7ed4aafe7c3162ca.jpeg)
运行效果