• 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());
        }
    }
  • 相关阅读:
    Contest (树状数组求逆序对)
    树状数组
    unity3D 笔记 (NENE QUEST 制作中用到的函数)
    Ubuntu 安装gnome桌面及vnc远程连接
    Pillow图像处理
    室内场景数据集
    PyTorch踩坑笔记
    进一步了解pip
    一些概念
    损失函数及评价指标
  • 原文地址:https://www.cnblogs.com/legion/p/9492377.html
Copyright © 2020-2023  润新知