SSH与SSM学习之hibernate14——Criteria查询

来源:互联网 发布:剑灵热巴数据 编辑:程序博客网 时间:2024/06/09 23:25

  • SSH与SSM学习之hibernate14Criteria查询
    • 一Criteria
    • Criteria 中拥有查询的方法如 list uniqueResult等
    • 二基本查询
      • 1 示例代码
      • 1 查询结果
    • 三条件查询
      • 1 说明
      • 2 示例代码
      • 3 查询结果
    • 四分页查询
      • 1 示例代码
      • 2 查询结果
    • 五查询总记录数
      • 1 聚合函数
      • 2 示例代码
      • 3 查询结果

SSH与SSM学习之hibernate14——Criteria查询

一、Criteria

比较适合单表查询。Hibernate自创的无语句面向对象查询。

Criteria 中拥有查询的方法,如 list() ,uniqueResult()等。

二、基本查询

2.1 示例代码

/** * Criteria基本查询 */@Testpublic void criteriaBaseDemo(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------基本查询---------------    //2.创建Criteria查询对象    Criteria criteria = session.createCriteria(User.class);    //3.获取集合    List<User> users = criteria.list();    //4.打印    System.out.println(users);    //-----------------------------------------    //5.关闭资源    session.close();}

2.1 查询结果

Hibernate:     select        this_.id as id1_0_0_,        this_.name as name2_0_0_,        this_.age as age3_0_0_     from        tb_user2 this_[User{id=1, name='小明', age=20}, User{id=2, name='xiaoming', age=19}, User{id=3, name='mingming', age=22}, User{id=4, name='mingge', age=20}, User{id=5, name='xx', age=99}, User{id=6, name='wiming', age=20}]

三、条件查询

3.1 说明

使用添加查询,我们需要个Criteria添加条件,我们主要使用到 Restrictions这个类的方法

sql中的表达式 Restrictions中的方法 > gt
=
ge < lt <= le == eq != ne in in between and between like like is not null isNotNull is null isNull or or and and

3.2 示例代码

/** * Criteria 条件查询HQL语句中,不可能出现任何数据库相关的信息的 >              gt >=             ge <              lt <=             le ==             eq !=             ne in             in between and        between like           like is not null        isNotNull is null            isNull or             or and                and */@Testpublic void criteriaConditionDemo(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------条件查询---------------    //2.获取Criteria对象    Criteria criteria = session.createCriteria(User.class);    //3.添加查询参数---> id 为1的User对象    criteria.add(Restrictions.eq("id",1));    User user = (User) criteria.uniqueResult();    //4.打印    System.out.println(user);    //-----------------------------------------    //5.关闭资源    session.close();}

3.3 查询结果

Hibernate:     select        this_.id as id1_0_0_,        this_.name as name2_0_0_,        this_.age as age3_0_0_     from        tb_user2 this_     where        this_.id=?User{id=1, name='小明', age=20}

四、分页查询

4.1 示例代码

/** * Criteria分页 */@Testpublic void criteriaPageDemo(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------条件查询---------------    //2.创建Criteria查询对象    Criteria criteria = session.createCriteria(User.class);    //3.设置分页信息    // 从0开始查询    criteria.setFirstResult(0);    // 查询3条数据    criteria.setMaxResults(3);    //4.执行查询    List<User> users = criteria.list();    //5.打印    System.out.println(users);    //-----------------------------------------    //6.关闭资源    session.close();}

4.2 查询结果

Hibernate:     select        this_.id as id1_0_0_,        this_.name as name2_0_0_,        this_.age as age3_0_0_     from        tb_user2 this_ limit ?[User{id=1, name='小明', age=20}, User{id=2, name='xiaoming', age=19}, User{id=3, name='mingming', age=22}]

五、查询总记录数

5.1 聚合函数

Criteria 中我们可以使用聚合函数。如下

//3. 设置查询的聚合函数 => 总行数criteria.setProjection(Projections.rowCount());

Projections中定义了很多聚合函数,例如 sum、avg、count、max、min

5.2 示例代码

/** * Criteria查询总记录数 */@Testpublic void criteriaTotalDemo(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------条件查询---------------    //2.创建Criteria查询对象    Criteria criteria = session.createCriteria(User.class);    //3. 设置查询的聚合函数 => 总行数    criteria.setProjection(Projections.rowCount());    //4. 查询    Long count = (Long)criteria.uniqueResult();    //5. 打印    System.out.println("总条数:"+count);    //-----------------------------------------    //6.关闭资源    session.close();}

5.3 查询结果

Hibernate:     select        count(*) as y0_     from        tb_user2 this_总条数:6

原创粉丝点击