Hibernate5-唯一查询和聚合查询
生活随笔
收集整理的這篇文章主要介紹了
Hibernate5-唯一查询和聚合查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.創建項目,項目名稱hibernatedemo8,目錄結構如圖所示
2.在項目中創建lib目錄存儲jar文件,目錄結構如圖所示
3.在src目錄中創建實體Bean Forum,包名(com.mycompany.demo.bean),如圖所示
4.實體Bean Forum的內容如下
package?com.mycompany.demo.bean;public?class?Forum?{private?int?fid;private?String?name;public?Forum()?{super();}public?Forum(String?name)?{super();this.name?=?name;}public?int?getFid()?{return?fid;}public?void?setFid(int?fid)?{this.fid?=?fid;}public?String?getName()?{return?name;}public?void?setName(String?name)?{this.name?=?name;}@Overridepublic?int?hashCode()?{final?int?prime?=?31;int?result?=?1;result?=?prime?*?result?+?fid;result?=?prime?*?result?+?((name?==?null)???0?:?name.hashCode());return?result;}@Overridepublic?boolean?equals(Object?obj)?{if?(this?==?obj)return?true;if?(obj?==?null)return?false;if?(getClass()?!=?obj.getClass())return?false;Forum?other?=?(Forum)?obj;if?(fid?!=?other.fid)return?false;if?(name?==?null)?{if?(other.name?!=?null)return?false;}?else?if?(!name.equals(other.name))return?false;return?true;} }5.在src目錄中創建實體Bean Forum的映射文件Forum.hbm.xml,包名(com.mycompany.demo.bean),如圖所示
6.映射文件Forum.hbm.xml的內容如下
<?xml?version="1.0"?encoding="utf-8"?> <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">?<!--package:指定<class/>所在的包?--> <hibernate-mapping?package="com.mycompany.demo.bean"><!--name:類名table:表名?catalog:數據庫名稱,默認為hibernate.cfg.xml中配置的數據庫名稱--><class?name="Forum"?table="hnsq_forum"?catalog="b_shequ_two"><meta?attribute="class-description">This?class?contains?the?forum?detail.?</meta><!--name:屬性名colum:列名?--><id?name="fid"?type="int"?column="fid"><!--increment:hibernate維護主鍵值identity:數據庫自增長sequence:序列native:根據不同的數據庫選擇生成策略uuid:通過UUID算法生成,實際使用較多assigned:手工設置--><generator?class="native"/></id><!--length:字節長度type:字段類型,支持java和hibernate類型not-null:非空約束unique:唯一性約束--><property?name="name"?column="name"?type="string"?length="50"?not-null="true"?unique="false"/></class> </hibernate-mapping>7.在src目錄中創建工具類 HbnUtil,包名(com.mycompany.demo.util),如圖所示
8.工具類?HbnUtil的內容如下
package?com.mycompany.demo.util;import?org.hibernate.Session; import?org.hibernate.SessionFactory; import?org.hibernate.cfg.Configuration;public?class?HbnUtil?{private?static?SessionFactory?sessionFactory;public?static?Session?getSession(){if(sessionFactory?==?null?||?sessionFactory.isClosed()){sessionFactory?=?new?Configuration().configure().buildSessionFactory();}return?sessionFactory.getCurrentSession();} }9.在src目錄中創建Hibernate的配置文件hibernate.cfg.xml,如圖所示
10.Hibernate的配置文件hibernate.cfg.xml的內容如下
<?xml?version="1.0"?encoding="utf-8"?> <!DOCTYPE?hibernate-configuration?SYSTEM? "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!--?方言,可以從Hibernate核心jar(hibernate-core-x.x.x.Finall.jar)文件中的or.hibernate.dialect包中找到相應的類,類的全名就是?--><property?name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!--?驅動?--><property?name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!--?數據庫連接地址?--><property?name="hibernate.connection.url">jdbc:mysql://localhost:3306/b_shequ_two</property><!--?用戶名?--><property?name="hibernate.connection.username">root</property><!--?密碼?--><property?name="hibernate.connection.password"></property><!--create:每次都新創建,如果存在就刪除create-drop:創建新表,sessionFactory關閉,表會刪除update?:表字段增加,會同步,字段減少不同步,數據改變會同步修改--><property?name="hibernate.hbm2ddl.auto">update</property><!--?輸出sql?--><property?name="hibernate.show_sql">true</property><!--?格式化sql?--><property?name="hibernate.format_sql">true</property><!--?事務環境一個線程對一個事務thread:本地事務環境jta:分布式事務環境SpringSessionContext:用于ssh整合--><property?name="hibernate.current_session_context_class">thread</property> ??<!--?使用c3p0數據源?--><property?name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>?<!--?List?of?XML?mapping?files?--><mapping?resource="com/mycompany/demo/bean/Forum.hbm.xml"/> </session-factory> </hibernate-configuration>11.在項目中創建test目錄存儲測試文件,文件名稱ManageForum,包名(com.mycompany.demo.bean),目錄結構如圖所示
12.ManageForum測試類的內容如下
package?com.mycompany.demo.bean;import?java.math.BigInteger; import?java.util.List;import?org.hibernate.HibernateException; import?org.hibernate.Query; import?org.hibernate.SQLQuery; 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.Before; import?org.junit.Test;import?com.mycompany.demo.util.HbnUtil;public?class?ManageForum?{private?Session?session;@Beforepublic?void?init(){session?=?HbnUtil.getSession();}/**?唯一性查詢-SQL*/@Testpublic?void?testUniqueSQL(){try?{session.beginTransaction();String?sql?=?"SELECT?*?FROM?hnsq_forum?WHERE?fid?=??";Forum?forum?=?(Forum)?session.createSQLQuery(sql).addEntity(Forum.class).setInteger(0,?54).uniqueResult();System.out.println(forum.getName());session.getTransaction().commit();}?catch?(Exception?e)?{session.getTransaction().rollback();e.printStackTrace();}}/**?唯一性查詢-HQL*/@Testpublic?void?testUniqueHQL(){try?{session.beginTransaction();String?sql?=?"FROM?Forum?WHERE?fid?=??";Forum?forum?=?(Forum)?session.createQuery(sql).setInteger(0,?54).uniqueResult();System.out.println(forum.getName());session.getTransaction().commit();}?catch?(Exception?e)?{session.getTransaction().rollback();e.printStackTrace();}}/**?唯一性查詢-QBC*/@Testpublic?void?testUniqueQBC(){try?{session.beginTransaction();Forum?forum?=?(Forum)?session.createCriteria(Forum.class).add(Restrictions.eq("fid",?54)).uniqueResult();System.out.println(forum.getName());session.getTransaction().commit();}?catch?(Exception?e)?{session.getTransaction().rollback();e.printStackTrace();}}/**?聚合函數查詢-SQL*/@Testpublic?void?testCountSQL(){try?{session.beginTransaction();String?sql?=?"SELECT?COUNT(*)?FROM?hnsq_forum";BigInteger?total?=?(BigInteger)?session.createSQLQuery(sql).uniqueResult();System.out.println(total);session.getTransaction().commit();}?catch?(Exception?e)?{session.getTransaction().rollback();e.printStackTrace();}}/**?聚合函數查詢-HQL*/@Testpublic?void?testCountHQL(){try?{session.beginTransaction();String?sql?=?"SELECT?COUNT(*)?FROM?Forum";Long?total?=?(Long)?session.createQuery(sql).uniqueResult();System.out.println(total);session.getTransaction().commit();}?catch?(Exception?e)?{session.getTransaction().rollback();e.printStackTrace();}}/**?聚合函數查詢-QBC*/@Testpublic?void?testCountQBC(){try?{session.beginTransaction();String?sql?=?"SELECT?COUNT(*)?FROM?Forum";Long?total?=?(Long)?session.createCriteria(Forum.class).setProjection(Projections.count("fid")).uniqueResult();System.out.println(total);session.getTransaction().commit();}?catch?(Exception?e)?{session.getTransaction().rollback();e.printStackTrace();}} }本文轉自 素顏豬 51CTO博客,原文鏈接:http://blog.51cto.com/suyanzhu/1911392
總結
以上是生活随笔為你收集整理的Hibernate5-唯一查询和聚合查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlserver中的数据类型[转]
- 下一篇: 初识LVS(一)——LVS介绍和LVS的