Hibernate--HQL基礎語法
1 建立表
@Test
public void testCreateDB(){
//3.x
//Configuration cfg = new AnnotationConfiguration().configure();
Configuration cfg = new Configuration().configure();
SchemaExport se = new SchemaExport(cfg);
se.create(true, true);
}
2 查詢
2.1 根據單個屬性
public void testQuery1(){
//查詢所有書名
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//Book 大寫 表示的是 cn.siggy.pojo.Book類
//name表示的 Book類中的屬性名
String hql="select name from Book";
Query query = session.createQuery(hql);
//list()方法返回查詢結果
//返回結果的型別 是根據查詢的列決定的
List<String> list = query.list();
for(String bookname:list){
System.out.println(bookname);
}
tx.commit();
HibernateUtil.closeSession();
}
2.2 查詢多個屬性
public void testQuery2(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//Book 大寫 表示的是 cn.siggy.pojo.Book類
//name表示的 Book類中的屬性名
//list()方法返回查詢結果
//查詢多個列時 返回結果是陣列集合 陣列中元素的型別 是由查詢列來決定
List<Object[]> list = session.createQuery("select name,price from Book").list();
for(Object[] objs:list){
System.out.println(objs[0]+"--"+objs[1]);
}
tx.commit();
HibernateUtil.closeSession();
}
查詢多個列時 將查詢結果封裝為物件集合
public void testQuery3(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//Book 大寫 表示的是 cn.siggy.pojo.Book類
//name表示的 Book類中的屬性名
//list()方法返回查詢結果
//查詢多個列時 返回結果是陣列集合 陣列中元素的型別 是由查詢列來決定
List<Book> list = session.createQuery("select new Book(name,price) from Book").list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
3 別名的使用
public void testQuery4(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//Book 大寫 表示的是 cn.siggy.pojo.Book類
//name表示的 Book類中的屬性名
//list()方法返回查詢結果
//查詢多個列時 返回結果是陣列集合 陣列中元素的型別 是由查詢列來決定
List<Book> list = session.createQuery("select new Book(b.name,b.price) from Book as b").list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
4 查詢所有列
public void testQuery5(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
List<Book> list = session.createQuery("from Book").list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
查詢所有列2 不能使用* 需要使用別名
public void testQuery6(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
List<Book> list = session.createQuery("select b from Book b").list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
5 條件查詢 佔位符 從0開始
public void testQuery7(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
List<Book> list = session.createQuery("from Book b where id<?")
.setInteger(0, 4)
.list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
條件查詢 佔位符 從0開始,setParameter不用理會引數型別
public void testQuery8(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
List<Book> list = session.createQuery("from Book b where id<?")
.setParameter(0, 4)
.list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
條件查詢 命名查詢–設定條件引數的名稱 以冒號開頭後更名稱 設定引數時 只需指定名
public void testQuery9(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
List<Book> list = session.createQuery("from Book b where id<:id")
.setParameter("id", 4)
.list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
6 分頁查詢
public void testQuery10(){
//查詢所有書 的名稱和價格
//建立Query物件
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
List<Book> list = session.createQuery("from Book b")
.setFirstResult(3)//開始顯示的記錄下標(currentPage-1)*pageSize
.setMaxResults(3)//設定每頁記錄數pageSize
.list();
session.createSQLQuery("").setFirstResult(1).setMaxResults(0);
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
7 聚合函式–統計查詢
public void testQuery11(){
//查詢圖書總數
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//int,long
Number count = (Number)session.createQuery("select max(b.price) from Book b")
.uniqueResult();
System.out.println("總數:"+count.byteValue());
tx.commit();
HibernateUtil.closeSession();
}
8 分組查詢
public void testQuery12(){
//查詢圖書總數
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//int,long
List<Object[]> list = session.createQuery("select b.category.name,count(b.id) from Book b group by b.category.name")
.list();
for(Object[] objs:list){
System.out.println(objs[0]+"--"+objs[1]);
}
tx.commit();
HibernateUtil.closeSession();
}
9 排序
public void testQuery13(){
//查詢圖書總數
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//int,long
List<Book> list = session.createQuery("from Book order by price desc")
.list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
10 連線查詢
public void testQuery14(){
//查詢 "仙俠"的書籍資訊
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
String hql="from Book b where b.category.name=:name";
hql="select b from Book b join b.category c where c.name=:name";
hql="select b from Book b inner join b.category c where c.name=:name";
List<Book> list = session.createQuery(hql)
.setString("name", "仙俠")
.list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
11 左外連結
public void testQuery15(){
//查詢 "仙俠"的書籍資訊
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
String hql="select c.name,b.name from Category c left outer join c.books b";
List<Object[]> list = session.createQuery(hql)
.list();
for(Object[] objs:list){
System.out.println(objs[0]+"----"+objs[1]);
}
tx.commit();
HibernateUtil.closeSession();
}
12 過濾器的使用
/* 1、定義過濾器
* 2、使用:加條件
* 3、在查詢時候 使得過濾器生效
* */
public void testQuery16(){
//查詢 "仙俠"的書籍資訊
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
//啟用過濾器
session.enableFilter("bf").setParameter("id", 4);
List<Book> list =session.createQuery("from Book").list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
13 命名查詢NamedQuery
public void testQuery17(){
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
List<Book> list =session.getNamedQuery("getByCategoryId")
.setInteger("id", 3)
.list();
for(Book b:list){
System.out.println(b);
}
tx.commit();
HibernateUtil.closeSession();
}
相關文章
- Java基礎-語法基礎Java
- 基礎語法
- 英語語法基礎
- scala基礎語法-----Spark基礎Spark
- Dart語法基礎Dart
- Vue基礎語法Vue
- Java 基礎語法Java
- CSS 基礎語法CSS
- jQuery基礎語法jQuery
- Scala基礎語法
- redis 基礎語法Redis
- mysql基礎語法MySql
- jQuery 基礎語法jQuery
- Markdown 基礎語法
- JavaScript 基礎語法JavaScript
- JAVA語法基礎Java
- markdow基礎語法
- CSS基礎語法CSS
- go 基礎語法Go
- Markdown基礎語法
- JavaScript 基礎卷(一):基礎語法JavaScript
- Python基礎:語法基礎(3)Python
- 【Java基礎】--深入剖析基礎語法Java
- Dart語法篇之基礎語法(一)Dart
- Golang 基礎之基礎語法梳理 (三)Golang
- Drools之基礎語法
- kotlin基礎語法Kotlin
- C++基礎語法C++
- JAVA基礎語法(一)Java
- Dart的基礎語法Dart
- Python 基礎語法Python
- Java基礎語法1Java
- Scala 的基礎語法
- JavaSE的基礎語法Java
- PHP--基礎語法PHP
- Java基礎語法[上]Java
- Swift:基礎語法(一)Swift
- [SQL] Oracle基礎語法SQLOracle