zoukankan      html  css  js  c++  java
  • hibernate----(Hql)另一种查询---利用Criteria类

    package com.etc.test;

    import java.util.List;

    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.criterion.DetachedCriteria;
    import org.hibernate.criterion.Restrictions;

    import com.etc.dao.HibernateSessionFactory;
    import com.etc.entity.Person;
    import com.etc.entity.Sex;

    public class cri查询
    {
    static void 基础的cri查询()
    {
    //1 获取session连接
    Session s = HibernateSessionFactory.getSession();

    //2 获取Criteria对象(查询标准)
    Criteria cri = s.createCriteria(Person.class);
    //3 配置各种查询约束条件
    //添加约束:pid等于1

    cri.add(Restrictions.ge("pid", 2))
    .add(Restrictions.like("pname", "老%"));

    /*
    Criteria cri2 = s.createCriteria(Sex.class);
    cri2.add(Restrictions.sizeEq("persons", 3));
    */
    //cri.add(Restrictions.or(Restrictions.ge("pid", 2), Restrictions.like("pname", "老%")));

    //4 查询结果
    /*
    List<Sex> list = cri2.list();
    for(Sex sex:list)
    {
    System.out.println(sex);
    }
    */

    List<Person> list = cri.list();
    for(Person p:list)
    {
    System.out.println(p);
    }


    //5 关闭
    HibernateSessionFactory.closeSession();
    }

    static void cri关联条件查询()
    {
    //例子:找出性别含有”未知“关键字的所有人
    //1 获取session连接
    Session s = HibernateSessionFactory.getSession();

    //2 获取Criteria对象(查询标准)
    Criteria cri1 = s.createCriteria(Person.class);

    //3 创建关联对象的查询cri对象
    Criteria cri2 = cri1.createCriteria("sex");

    cri2.add(Restrictions.like("sexname", "%未知%"));

    List<Person> list = cri1.list();
    for(Person p:list)
    {
    System.out.println(p);
    }
    }

    static void 离线查询()
    {
    //1 在未进行数据库连接时,创建离线查询的对象
    DetachedCriteria dri = DetachedCriteria.forClass(Person.class);
    dri.add(Restrictions.eq("pid", 2));

    //2 一旦发现处于连接状态,则可将离线查询转出在线查询
    Session s = HibernateSessionFactory.getSession();
    Criteria cri = dri.getExecutableCriteria(s);

    //3 执行查询
    List<Person> list = cri.list();
    for(Person p:list)
    {
    System.out.println(p);
    }
    }

    public static void main(String[] args)
    {
    //基础的cri查询();
    //cri关联条件查询();
    离线查询();
    }
    }

  • 相关阅读:
    流畅 最好用的远程桌面推荐下?
    高性能远程桌面Splashtop 居家办公首选软件
    ShareConnect即将寿终正寝 Splashtop远程桌面会是最好的替代品
    详解Springboot中自定义SpringMVC配置
    Java中使用RSA算法加密
    Docker搭建MySQL主从复制
    SpringMVC中RequestContextHolder获取请求信息
    详解Redis持久化(RDB和AOF)
    Redis事务
    Springboot CORS跨域访问
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6222981.html
Copyright © 2011-2022 走看看