Hibernate:QBC查询语言

来源:互联网 发布:电信网络电视多少钱 编辑:程序博客网 时间:2024/05/22 06:53

hibernate提供面向对象操作数据库API。

Criteria对象的获得方式:session.createCriteria()。

该查询方法可以通过链式语句查询

主要方法:

*add(Criterion criterion) 添加条件,Restrictions.eq("kit.name", "Iz%") 获得Criterion对象

*list() 获得查询结果

示例:

1,查询所有客户

@Test

    public void demo01(){

       // 查询所有 -- 客户

       Session session =SessionUtils.openSession();

       Transaction transaction =session.beginTransaction();

      

       Criteria criteria = session.createCriteria(Customer.class);//要查询对象的字节码

       List<Customer> all = criteria.list();

       for (Customer customer : all) {

           System.out.println(customer);

       }

      

       transaction.commit();

       session.close();

      

    }

==================我是分割线====================

2,查询id为7的客户

Criteriacriteria = session.createCriteria(Customer.class);//非链式

criteria.add(Restrictions.eq("id",7));

// Restrictions中的API可以当作查询条件使用,例如eq是相等的意思,lt是小于的意思等

List<Customer>all = criteria.list();

for(Customer customer : all) {

    System.out.println(customer);

}

 

//链式

List<Customer>all2 = session.createCriteria(Customer.class)

                            .add(Restrictions.eq("id",7))

                            .list();

==================我是分割线====================

3,多条件查询,like语句为模糊查询,注意%

Criteriacriteria = session.createCriteria(Customer.class)

                  .add(Restrictions.and(Restrictions.

eq("id", 7),Restrictions.like("name","%f%")));

      

List<Customer>all = criteria.list();

for(Customer customer : all) {

    System.out.println(customer);

}

==================我是分割线====================

4,复杂查询,客户,订单小于30

Criteriacriteria = session.createCriteria(Customer.class)

                  .createAlias("orderSet","os", Criteria.INNER_JOIN)

                  .add(Restrictions.lt("os.id",30))

                  .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

      

List<Customer>all = criteria.list();

for(Customer customer : all) {

    System.out.println(customer);

}

原创粉丝点击