398、Java框架52 -【Hibernate - 分頁、兩種獲取方式】 2020.10.27
1、分頁
使用Criteria進行分頁查詢
無論你使用的是Oracle,Mysql,NoSQL還是DB2,分頁查詢的程式碼寫法都是一樣的
2、分頁,從第3個開始,一共查詢5個Product
Hibernate使用Criteria 來進行分頁查詢
c.setFirstResult(2); 表示從第3條資料開始
c.setMaxResults(5); 表示一共查詢5條資料
package com.how2java.test;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import com.how2java.pojo.Product;
public class TestHibernate {
public static void main(String[] args) {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
String name = "iphone";
Criteria c= s.createCriteria(Product.class);
c.add(Restrictions.like("name", "%"+name+"%"));
c.setFirstResult(2);
c.setMaxResults(5);
List<Product> ps = c.list();
for (Product p : ps) {
System.out.println(p.getName());
}
s.getTransaction().commit();
s.close();
sf.close();
}
}
3、延遲載入
load方式是延遲載入,只有屬性被訪問的時候才會呼叫sql語句
get方式是非延遲載入,無論後面的程式碼是否會訪問到屬性,馬上執行sql語句
package com.how2java.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.how2java.pojo.Product;
public class TestHibernate {
public static void main(String[] args) {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
System.out.println("log1");
Product p = (Product) s.get(Product.class, 1);
System.out.println("log2");
Product p2 = (Product) s.load(Product.class, 2);
System.out.println("log3");
System.out.println(p2.getName());
System.out.println("log4");
s.getTransaction().commit();
s.close();
sf.close();
}
}
4、對於id不存在的物件的處理
都通過id=500去獲取物件
- get方式會返回null
- load方式會丟擲異常
package com.how2java.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.how2java.pojo.Product;
public class TestHibernate {
public static void main(String[] args) {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
System.out.println("log1");
Product p = (Product)s.get(Product.class, 5);
System.out.println("log2");
Product p2 = (Product)s.load(Product.class, 5);
System.out.println("log3");
Product p3 = (Product)s.get(Product.class, 500);
System.out.println("p3="+p3);
Product p4 = (Product)s.load(Product.class, 500);
System.out.println("p3="+p4);
s.getTransaction().commit();
s.close();
sf.close();
}
}
5、參考連結
相關文章
- Groovy獲取Bean兩種方式(奇淫技巧操作)Bean
- Java中Elasticsearch 實現分頁方式(三種方式)JavaElasticsearch
- SSH整合實現分頁查詢(兩種方式)
- Java中獲取Class物件的三種方式Java物件
- 兩種方法獲取網頁編碼python版網頁Python
- js獲取頁面dom元素的幾種常用方式JS
- Python訪問Oracle的兩種資料獲取方式PythonOracle
- Qt獲取當前時間的兩種方式筆記QT筆記
- 三種SQL分頁方式SQL
- SQL Server在分頁獲取資料的同時獲取到總記錄數的兩種方法SQLServer
- python四種方式解析網頁獲取頁面中的連結Python網頁
- hibernate中建立session的兩種方式方式,區別在哪裡?Session
- 獲取cookie的3種方式Cookie
- 線上直播原始碼,java資料分頁幾種方式原始碼Java
- 解決HIbernate分頁問題獲取表總行數的小Bug
- Springboot啟動了哪些bean?這兩種方式可以獲取Spring BootBean
- Java 獲取Excel分頁座標位置(單元格)JavaExcel
- java獲取B站彈幕檔案的兩種方案Java
- 獲取Java執行緒返回值的幾種方式Java執行緒
- 直播軟體原始碼,java資料分頁幾種方式原始碼Java
- javascript獲取url地址的幾種方式JavaScript
- MFC框架各部分指標獲取方式框架指標
- Java鍵盤錄入的兩種方式Java
- java 傳遞引數的兩種方式Java
- java執行緒建立的兩種方式Java執行緒
- Java Spring AOP的兩種配置方式JavaSpring
- Hibernate 框架的查詢方式框架
- PG獲取檔案大小的幾種方式
- Spark Streaming讀取Kafka資料兩種方式SparkKafka
- Java 獲取碟符及分類Java
- Java執行groovy指令碼的兩種方式Java指令碼
- java json格式化的兩種方式JavaJSON
- java 利用FileOutputStream寫檔案(兩種方式)Java
- JS獲取元素寬高的兩種情況JS
- Spring - 獲取ApplicationContext的幾種方式SpringAPPContext
- 獲取或操作DOM元素特性的幾種方式
- 反射-獲取class檔案物件的三種方式反射物件
- 獲取WebLogic版本號有以下幾種方式Web