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物件
- 解決HIbernate分頁問題獲取表總行數的小Bug
- python四種方式解析網頁獲取頁面中的連結Python網頁
- Springboot啟動了哪些bean?這兩種方式可以獲取Spring BootBean
- SQL Server在分頁獲取資料的同時獲取到總記錄數的兩種方法SQLServer
- Lavarel Ajax 分頁時 獲取分頁資訊
- Java 獲取Excel分頁座標位置(單元格)JavaExcel
- java獲取B站彈幕檔案的兩種方案Java
- 獲取Java執行緒返回值的幾種方式Java執行緒
- Spring - 獲取ApplicationContext的幾種方式SpringAPPContext
- 線上直播原始碼,java資料分頁幾種方式原始碼Java
- 直播軟體原始碼,java資料分頁幾種方式原始碼Java
- hibernate的三種查詢方式
- 21-Java-Hibernate框架(一)Java框架
- Spark Streaming讀取Kafka資料兩種方式SparkKafka
- java 傳遞引數的兩種方式Java
- java json格式化的兩種方式JavaJSON
- Java鍵盤錄入的兩種方式Java
- SpringBoot獲取HttpServletRequest的3種方式總結Spring BootHTTPServlet
- PG獲取檔案大小的幾種方式
- java框架之Hibernate框架知識點整理。Java框架
- Java獲取Spring的各種物件JavaSpring物件
- Java執行groovy指令碼的兩種方式Java指令碼
- Python 爬取網頁資料的兩種方法Python網頁
- JS獲取元素寬高的兩種情況JS
- 獲取或操作DOM元素特性的幾種方式
- java正規表示式四種常用的處理方式(匹配、分割、替代、獲取)Java
- php獲取網頁內容的三種方法PHP網頁
- Hibernate5.1+Sqlserver2000分頁查詢SQLServer
- Hibernate框架框架
- python兩種獲取剪貼簿內容的方法Python
- Python獲取list中指定元素索引的兩種方法Python索引
- Java中實現並行請求兩種方式Java並行
- AUTOCAD——兩種延伸方式
- Spring在程式碼中獲取bean的幾種方式SpringBean