閱讀89 返回首頁    go 微軟 go windows


第十一章 Hibernate的查詢 Query Language(官方推薦使用)

主要是通過 org.hibernate.Query接口的實例來使用HQL語句進行查詢。

HQL語法:https://blog.csdn.net/p_3er/article/details/9064551
1、簡單的查詢(from+實體類名稱)
Query query = session.createQuery("from User");
			List<User> list = query.list(); 
			for(User user : list){
				System.out.println(user.getUsername());
			}


2、條件查詢
Query query = session.createQuery("from User as u where u.id > 210");
			List<User> list = query.list(); 
			for(User user : list){
				System.out.println(user.getUsername());
			}

這裏隻是簡單的條件查詢,更多可以通過查看hql語法進行操作。


3、預處理的HQL

使用?號來占位:

Query query = session.createQuery("from User as u where u.id > ?");
			//這裏第一個參數代表的是占位符的位置,從0開始。第二個是指這個位置的值。而setXXX()方法是根據值的類型來決定的。setString()、setDouble()、setInteger()等。
			query.setInteger(0, 210);
			List<User> list = query.list(); 
			for(User user : list){
				System.out.println(user.getUsername());
			}

使用字符串(如:n)來占位:

Query query = session.createQuery("from User as u where u.id > :n");
			//基本上和和使用?號占位方式一樣。注意:這裏占位符的前麵還有一個:號。
			query.setInteger("n", 210);
			List<User> list = query.list(); 
			for(User user : list){
				System.out.println(user.getUsername());
			}


4、根據外鍵作為條件查詢
Query query = session.createQuery("from IdCard as idCard where idCard.person.id =15");
			List<IdCard> list = query.list(); 
			for(IdCard idCard : list){
				System.out.println(idCard.getCardNo());
			}


5、分頁(重點)
Query query = session.createQuery("from User");
			query.setFirstResult(0); //從哪條記錄開始
			query.setMaxResults(5);  //取多少條記錄
			List<User> list = query.list(); 
			for(User user : list){
				System.out.println(user.getUsername());
			}

//具體:
		Query query = session.createQuery(hql);
		
		Query q = session.createQuery("select count(*) from Person");
		Long count = (Long) q.uniqueResult();
		
		
		int pageSize = 5;  //每一頁的記錄數
		Long totalPages = count/pageSize; //一共有多少頁
		if(count%pageSize != 0){
			totalPages += 1;
		}
		System.out.println(totalPages);
		int page = 3;  //查詢是的第幾頁
		query.setFirstResult((page - 1)*pageSize);
		query.setMaxResults(pageSize);

		List<Person> list = query.list();
		for(Person p : list){
			System.out.println(p.getId()+"--"+p.getName());
		}


6、uniqueResult

查詢記錄隻有一條的時候使用。

Query query = session.createQuery("select count(*)from User");
			Long count = (Long) query.uniqueResult();
			System.out.println(count);



最後更新:2017-04-03 18:52:11

  上一篇:go 上傳或下載當文件名包含有特殊字符&quot;#&quot;的處理
  下一篇:go 第十章 基於Annotation的關係映射 多對多