码迷,mamicode.com
首页 > Web开发 > 详细

hibernate之查询

时间:2017-11-17 22:25:36      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:system   产生   操作   构造方法   执行   字段   持久化   lis   打印   

Query对象

    方便的对数据库和持久化对象进行查询,两种表达方式:HQL和SQL;

    Query经常用来绑定查询参数,限制查询条数。并最终执行查询语句。

HQL

查询一个简单类(查询所有)

	@Test //修改方法
		public void test3(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			Query query = session.createQuery("from User");
			List list = query.list();
			System.out.println(list);
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

 分页查询

		@Test //修改方法
		public void test3(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			Query query = session.createQuery("from User");
			query.setFirstResult(0);//设置开始的位置
			query.setMaxResults(10);//设置查询多少条
			List list = query.list();
			for (Object object : list) {
				System.out.println(object);
			}
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

 查看指定列

          @Test //查询指定列
		public void test4(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			//查询指定列时,必须在javabean中提供该字段的构造方法  其他列为空
			Query query = session.createQuery("select new User(username,password) from User");
			List<User> list = query.list();
			for (User u : list) {
				System.out.println(u);
			}
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

条件查询

	@Test //条件查询(无名称参数)
		public void test5(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			//查询指定列时,必须在javabean中提供默认的构造方法(无参构造)  
			//因为有参会替换无参  然而在条件查询时会调用无参构造
			/*条件查询(无名称参数)
			 * Query query = session.createQuery("from User where username=?");
			query.setParameter(0, "zhangsan111");*/
			//条件查询(有名称参数)
			Query query = session.createQuery("from User where username=:myusername");
			query.setParameter("myusername", "zhangsan111");
			User user = (User) query.uniqueResult();
			System.out.println(user);
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

  SQL

  查询所有

          @Test //sql查询
		public void test6(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			SQLQuery query = session.createSQLQuery("select * from user");
			
			List<Object[]> list = query.list();
			for (Object object : list) {
				//打印地址值
				System.out.println(object);
			}
			/*object对象指向User类
			 * query.addEntity(User.class);
			List<User> list = query.list();
			for (User user : list) {
				System.out.println(user);
			}*/
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

  条件查询

          @Test //sql条件查询()
		public void test7(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			SQLQuery query = session.createSQLQuery("select * from user where username=?");
			query.setParameter(0, "zhangsan111");
			//object对象指向User类
			query.addEntity(User.class);
			User user = (User) query.uniqueResult();//转换时还是会让Query对象识别到User这个类
			System.out.println(user);
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

Criteria对象

查询所有

          @Test //Criteria查询全部
		public void test8(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			Criteria criteria = session.createCriteria(User.class);
			List list = criteria.list();
			for (Object object : list) {
				System.out.println(object);
			}
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

  单条件查询/多条件查询

          @Test //Criteria条件查询查询
		public void test9(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			Criteria criteria = session.createCriteria(User.class);
               //条件1 criteria.add(Restrictions.eq("username", "zhangsan111"));
               //条件2
               criteria.add(Restrictions.eq("username","zhangsan111"));
List list = criteria.list(); for (Object object : list) { System.out.println(object); } //不需要关闭Configuration 因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration //configuration相当于连接池 session.close(); }

  条件或

@Test //Criteria条件查询查询or
		public void test10(){
			Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。
			// 操作
			Criteria criteria = session.createCriteria(User.class);
			//条件1
			criteria.add(Restrictions.or(Restrictions.eq("username", "zhangsan111"),Restrictions.eq("username", "fanjiankang")));
		
			List list = criteria.list();
			for (Object object : list) {
				System.out.println(object);
			}
			//不需要关闭Configuration  因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration
			//configuration相当于连接池
			session.close();
		}

  Cariteria只是对于criteria的方法进行对于sql语句的控制,这样整个开发过程及其检索;

 

hibernate之查询

标签:system   产生   操作   构造方法   执行   字段   持久化   lis   打印   

原文地址:http://www.cnblogs.com/fjkgrbk/p/hibernate_select.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!