2018.11.13 Hibernate 中資料庫查詢中的Criteria查詢例項
阿新 • • 發佈:2018-11-13
Criteria是面向物件的無語句查詢
Demo.java
package com.legend.b_criteria; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.junit.jupiter.api.Test; import com.legend.domain.Customer; import com.legend.utils.HibernateUtils; /** * 學習Criteria語法 * @author qichunlin * */ public class Demo { //基本語法 @Test public void fun1() { Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //-------------- Criteria criteria = session.createCriteria(Customer.class); List<Customer> list = criteria.list(); System.out.println(list); //-------------- tx.commit(); session.close(); } //條件查詢 @Test public void fun2(){ // Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //-------------- //建立Criteria 物件 Criteria criteria = session.createCriteria(Customer.class); //新增Criteria的查詢引數 criteria.add(Restrictions.eq("cust_id", 1l)); //獲取查詢的結果 Customer c = (Customer) criteria.uniqueResult(); System.out.println(c); //-------------- //事務的提交 tx.commit(); session.close(); } //分頁查詢 //(當前頁數-1)*每頁條數 @Test public void fun3() { // Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //-------------- //編寫HQL語句 Criteria criteria = session.createCriteria(Customer.class); criteria.setFirstResult(1); criteria.setMaxResults(2); List<Customer> list = criteria.list(); System.out.println(list); //-------------- tx.commit(); session.close(); } //排序檢索 @Test public void fun5() { // Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //-------------- Criteria criteria = session.createCriteria(Customer.class); criteria.addOrder(Order.desc("cust_id")); List<Customer> list = criteria.list(); System.out.println(list); //-------------- tx.commit(); session.close(); } //統計查詢 @Test public void fun6() { // Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); //-------------- //編寫HQL語句 Criteria criteria = session.createCriteria(Customer.class); //設定查詢目標 criteria.setProjection(Projections.rowCount()); //List list = query.list(); List<Long> list = criteria.list(); System.out.println(list); //-------------- tx.commit(); session.close(); } }
基本查詢
統計查詢
附上hibernate的額核心配置檔案xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- 配置引數檔案 --> <hibernate-configuration> <session-factory> <!-- #hibernate.dialect org.hibernate.dialect.MySQLDialect #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect #hibernate.connection.driver_class com.mysql.jdbc.Driver #hibernate.connection.url jdbc:mysql:///test #hibernate.connection.username gavin #hibernate.connection.password 配置mysql相關引數 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///crm</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123456</property> <!-- 配置mysql方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- sql語句顯示 #hibernate.show_sql true # format SQL in log and console #hibernate.format_sql true --> <property name="hibernate.format_sql">true</property> <property name="hibernate.show_sql">true</property> <!-- ## auto schema export #hibernate.hbm2ddl.auto create-drop #hibernate.hbm2ddl.auto create #hibernate.hbm2ddl.auto update #hibernate.hbm2ddl.auto validate --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 設定資料庫隔離級別 ## specify a JDBC isolation level #hibernate.connection.isolation 4 --> <property name="hibernate.connection.isolation">4</property> <!-- 指定session與當前執行緒繫結 --> <property name="hibernate.current_session_context_class">thread</property> <!-- 配置對映檔案載入 orm元資料 --> <mapping resource="com/legend/domain/Customer.hbm.xml"/> <mapping resource="com/legend/domain/LinkMan.hbm.xml" /> <mapping resource="com/legend/domain/User.hbm.xml" /> <mapping resource="com/legend/domain/Role.hbm.xml" /> </session-factory> </hibernate-configuration>