05-Hibernate查询语句
-
Hibernate中批量查询(概述)
-
HQL查询 Hibernate Query Language
-
特点: Hibernate 独家查询语言 属于面向对象查询语言
-
基本查询
@Test //基本查询 public void fun1(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1.书写hql语句 //String hql = "from com.qingzi.domain.Customer"; String hql = "from Customer"; //查询所有Customer对象 //2.根据hql语句创建查询对象 Query query = session.createQuery(hql); //3.根据查询对象获得查询结构 List<Customer> list = query.list(); //返回list结果 // query.uniqueResult(list); //接收唯一查询结果 System.out.println(list); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
条件查询
@Test //条件查询 //hql语句中,不可能出现任何数据库中相关的信息的 public void fun2(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1.书写hql语句 String hql = "from Customer where cust_id = 1"; //查询id为1的Customer对象 //2.根据hql语句创建查询对象 Query query = session.createQuery(hql); //3.根据查询对象获得查询结构 Customer c = (Customer) query.uniqueResult(); System.out.println(c); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
@Test //条件查询 //问号占位符 public void fun3(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1.书写hql语句 String hql = "from Customer where cust_id = ?"; //查询id为1的Customer对象 //2.根据hql语句创建查询对象 Query query = session.createQuery(hql); //设置参数 //query.setLong(0, 1l); query.setParameter(0, 1l); //3.根据查询对象获得查询结构 Customer c = (Customer) query.uniqueResult(); System.out.println(c); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
@Test //条件查询 //命名占位符 public void fun4(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1.书写hql语句 String hql = "from Customer where cust_id = :cust_id"; //查询id为1的Customer对象 //2.根据hql语句创建查询对象 Query query = session.createQuery(hql); //设置参数 query.setParameter("cust_id", 1l); //3.根据查询对象获得查询结构 Customer c = (Customer) query.uniqueResult(); System.out.println(c); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
条件查询–>分页查询
@Test //条件查询 //分页查询 public void fun5(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1.书写hql语句 String hql = "from Customer"; //查询所有Customer对象 //2.根据hql语句创建查询对象 Query query = session.createQuery(hql); //设置参数 query.setFirstResult(1);//设置从第几页开始 query.setMaxResults(2);//设置显示一页的最大显示数目 //3.根据查询对象获得查询结构 List<Customer> list = query.list(); System.out.println(list); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联
-
-
criteria查询
-
criteria特点: 无语句面向对象查询
-
基本查询
@Test //基本查询 public void fun1(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //查询所有的Customer对象 Criteria criteria = session.createCriteria(Customer.class); List<Customer> list = criteria.list(); System.out.println(list); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
条件查询
@Test //条件查询 //hql语句中,不可能出现任何数据库中相关的信息的 /** * > gt * >= ge * < lt * <= le * == eq * != ne * in in * between and between * like like * is not null is not null * is null is null * or or * and and */ public void fun2(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //查询所有的Customer对象 Criteria criteria = session.createCriteria(Customer.class); //添加查询参数=>查询cust_id为1的customer对象 criteria.add(Restrictions.eq("cust_id", 1l)); //执行查询获得结果 Customer c = (Customer) criteria.uniqueResult(); ///List<Customer> list = criteria.list(); System.out.println(c); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
条件查询–>分页查询、
@Test //条件查询 public void fun3(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //查询所有的Customer对象 Criteria criteria = session.createCriteria(Customer.class); //设置分页信息 limit?,? criteria.setFirstResult(1); criteria.setMaxResults(2); //执行查询 List<Customer> list = criteria.list(); System.out.println(list); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
查询总记录数
@Test //查询总记录数 public void fun4(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //查询所有的Customer对象 Criteria criteria = session.createCriteria(Customer.class); //设置查询的聚合函数 = >总行数 criteria.setProjection(Projections.rowCount()); //执行查询 Long count = (Long) criteria.uniqueResult(); System.out.println(count); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
-
原生sql查询
-
基本查询
-
返回数组List
@Test //基本查询 public void fun1(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1. 书写sql语句 String sql = "select * from cst_customer"; //2. 创建sql查询对象 SQLQuery query = session.createSQLQuery(sql); //3.调用方法查询结果 List<Object[]> list = query.list(); for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); } //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
返回对象list
@Test //基本查询 public void fun2(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1. 书写sql语句 String sql = "select * from cst_customer"; //2. 创建sql查询对象 SQLQuery query = session.createSQLQuery(sql); //指定结果集封装到哪个对象中 query.addEntity(Customer.class); //3. 调用方法查询结果 List<Customer> list = query.list(); System.out.println(list); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
-
条件查询
@Test //条件查询 public void fun3(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1. 书写sql语句 String sql = "select * from cst_customer where cust_id = ?"; //2. 创建sql查询对象 SQLQuery query = session.createSQLQuery(sql); query.setParameter(0, 1); //指定结果集封装到哪个对象中 query.addEntity(Customer.class); //3. 调用方法查询结果 List<Customer> list = query.list(); System.out.println(list); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-
分页查询
@Test //分页查询 public void fun4(){ //1、获得Session Session session = HibernateUtils.openSession(); //2、控制事务 Transaction tx = session.beginTransaction(); //3、执行操作 //-------------------------------------- //1. 书写sql语句 String sql = "select * from cst_customer limit ?,?"; //2. 创建sql查询对象 SQLQuery query = session.createSQLQuery(sql); query.setParameter(0, 0l); query.setParameter(1, 1l); //指定结果集封装到哪个对象中 query.addEntity(Customer.class); //3. 调用方法查询结果 List<Customer> list = query.list(); System.out.println(list); //-------------------------------------- //4、提交事务、关闭事务 tx.commit(); session.close();//游离状态|托管状态, 有id,没有关联 }
-