zoukankan      html  css  js  c++  java
  • 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());
        }
    }
  • 相关阅读:
    传输层——UDP报文头介绍
    传输层——TCP报文头介绍
    网络层——IP报文头介绍
    数据链路层——以太网包头介绍
    POJ2752 (Seek the Name, Seek the Fame,kmp)
    POJ2406 Power Strings
    HNOI2008 玩具装箱toy (BZOJ1010,斜率dp)
    Covered Walkway(HDU4258,dp斜率优化)
    HDU3507 Print Article
    POJ1821 Fence
  • 原文地址:https://www.cnblogs.com/legion/p/9492377.html
Copyright © 2011-2022 走看看