Hibernate執行sql相關問題

2021-06-25 16:27:11 字數 1827 閱讀 5565

1.查詢

(1)、利用hibernate提供的sqlquery物件執行。即可以通過session物件的createsqlquery()方法獲取。如:

string sql = "select * from product limit 0,10";

sqlquery query = session.createsqlquery(sql);

list= query.list();

注意:查詢結果返回的是乙個object的陣列。

(2)、利用resultmetadata物件來實現執行sql語句,但是如果過多地使用這種方法就會對系統的效能產生影響,它將降低執行效率。通過addscalar()方法設定返回資料的型別可以減少resultsetmetadata物件的使用而提高執行效率。如:

string sql = "select * from product limit 0,10";

sqlquery sqlquery = session.createsqlquery();

sqlquery.addscalar("id",hibernate.integer);

sqlquery.addscalar("name",hibernate.string);

sqlquery.addscalar("addre",hibernate.string);

sqlquery.addscalar("des",hibernate.string);

listlist = sqlquery.list();

2.持久化

方式1:hibernate不僅能把查詢到的記錄封裝為包含多個object陣列的list物件返回,還可以把每一條查詢到的記錄封裝成持久物件後返回包含這些物件的list物件。如:

string sql = "select * from product limit 0,10";

sqlquery sqlquery = session.createsqlquery();

sqlquery.addentity(product .class);

listlist = sqlquery.list();

方式2:使用大括號指定查詢的字段,然後通過sqlquery物件物件的addentity()方法關聯sql中的別名和持久化類確定要返回的list物件中的每個元素型別。如:

string sql = "select from product p,category c where p.category_id=c.id";

sqlquery sqlquery = session.createsqlquery();

sqlquery.addentity("p",product.class);

listlist = sqlquery.list();

方式3:同時使用sqlquery物件的addscalar()方法和transformers物件的aliastobean()方法關聯資料庫的表與持久化類確定返回記錄的各個欄位與持久化類屬性的物件對應關係。如:

string sql = "select p.id,p.name from product p,category c where p.category_id = c.id";

sqlquery sqlquery = session.createsqlquery(sql);

sqlquery.addscalar("id",hibernate.integer)

.addscalar("name",hibernate.string);

sqlquery.setresulttransformer(transformers.aliastobean(product.class));

listlist = sqlquery.list();

原始文章:

三 Hibernate 執行複雜的sql

1 使用sql查詢 使用sql查詢可以通過兩種方式來實現 1 利用hibernate提供的sqlquery物件執行。即可以通過session物件的createsqlquery 方法獲取。如 string sql select from product limit 0,10 sqlquery quer...

hibernate執行sql語句的總結

下面看個示例 public listfindmenusbyentitytypeid long id m.name as m.url as m.icon url as m.parent id as m.serial number as m.admin as m.system admin as m.pr...

Hibernate 原生SQL查詢

hql儘管容易使用,但是在一些複雜的資料操作上功能有限。特別是在實現複雜的報表統計與計算,以及多表連線查詢上往往無能為力,這時可以使用sql native sql 實現hql無法完成的任務。1 使用sql查詢 使用sql查詢可以通過兩種方式來實現 1 利用hibernate提供的sqlquery物件...