Java web开发(9)Hibernate使用_c

QBC查询和HQL查询

这里还是以上一篇中的类Customer 和LinkMan为例子:

1查询所有

QBC

//1 创建对象
Criteria criteria = session.createCriteria(Customer.class);
//2 调用方法得到结果
List<Customer> list = criteria.list();

for (Customer customer : list) {
    System.out.println(customer.getCid()+"::"+customer.getCustName());
}

 

HQL

//1 创建query对象
Query query = session.createQuery("from Customer");
//2 调用方法得到结果
List<Customer> list = query.list();

for (Customer customer : list) {
    System.out.println(customer.getCid()+"::"+customer.getCustName());
}

2. 条件查询

SELECT * FROM t_customer WHERE cid=? AND custName=?

QBC

Criteria criteria = session.createCriteria(Customer.class);
criteria.add(Restrictions.eq("cid", 1));
criteria.add(Restrictions.eq("custName", "XX"));
List<Customer> list = criteria.list();

HQL

Query query = session.createQuery("from Customer c where c.cid=? and c.custName=?");
//设置条件值

// 第一个参数:int类型是?位置,?位置从0开始
// 第二个参数:具体参数值
//设置第一个?值
query.setParameter(0, 1);
//设置第二个?值
query.setParameter(1, "XX");

//3 调用方法得到结果
List<Customer> list = query.list();

 

3模糊查询

QBC

//1 创建对象
Criteria criteria = session.createCriteria(Customer.class);
//2设置模糊查询
criteria.add(Restrictions.like("custName", "%浪%"));
//3 调用方法得到结果
List<Customer> list = criteria.list();

HQL

//1 创建query对象
Query query = session.createQuery("from Customer c where c.custName like ?");

//2 设置?的值
// %浪%
query.setParameter(0, "%浪%");

//3 调用方法得到结果
List<Customer> list = query.list();

 

4排序查询

QBC

//1 创建对象
Criteria criteria = session.createCriteria(Customer.class);

//2 设置对哪个属性进行排序,设置排序规则 
criteria.addOrder(Order.desc("cid"));

//3 调用方法得到结果
List<Customer> list = criteria.list();

HQL

//1 创建query对象
Query query = session.createQuery("from Customer order by cid desc");

//2 调用方法得到结果
List<Customer> list = query.list();

5分页查询

QBC

//1 创建对象
Criteria criteria = session.createCriteria(Customer.class);

//2 设置分页数据
//2.1 设置开始位置
criteria.setFirstResult(0);
//2.2 每页显示记录数
criteria.setMaxResults(3);

//3 调用方法得到结果
List<Customer> list = criteria.list();

 

HQL

Query query = session.createQuery("from Customer");

//2 设置分页数据
//2.1 设置开始位置
query.setFirstResult(0);
//2.2 设置每页记录数
query.setMaxResults(3);

//3 调用方法得到结果
List<Customer> list = query.list();

6.统计查询

QBC

//1 创建对象
Criteria criteria = session.createCriteria(Customer.class);
//2 设置操作
criteria.setProjection(Projections.rowCount());
//3 调用方法得到结果
Object obj = criteria.uniqueResult();
Long lobj = (Long) obj;
int count = lobj.intValue();
System.out.println(count);

HQL

//1 创建query对象
Query query = session.createQuery("select count(*) from Customer");
//2 调用方法得到结果
//query对象里面有方法,直接返回对象形式
Object obj = query.uniqueResult();
Long lobj = (Long) obj;
int count = lobj.intValue();
System.out.println(count);

最末,HQL的投影查询

//1 创建query对象
Query query = session.createQuery("select custName from Customer");

//2 调用方法得到结果
List<Object> list = query.list();

 

Hibernate对象导航查询

//根据cid=1客户,再查询这个客户里面所有联系人
Customer customer = session.get(Customer.class, 1);
//再查询这个客户里面所有联系人
//直接得到客户里面联系人的set集合

//得到set集合,没有发送语句
Set<LinkMan> linkman = customer.getSetLinkMan();

批量抓取

//查询所有客户
Criteria criteria = session.createCriteria(Customer.class);
List<Customer> list = criteria.list();
//得到每个客户里面所有的联系人
for (Customer customer : list) {
    System.out.println(customer.getCid()+"::"+customer.getCustName());
    //每个客户里面所有的联系人
    Set<LinkMan> setLinkMan = customer.getSetLinkMan();
    for (LinkMan linkMan : setLinkMan) {
        System.out.println(linkMan.getLkm_id()+"::"+linkMan.getLkm_name());
    }
}

 

posted on 2018-08-17 11:25  legion  阅读(211)  评论(0编辑  收藏  举报

导航