網站首頁 學習教育 IT科技 金融知識 旅遊規劃 生活小知識 家鄉美食 養生小知識 健身運動 美容百科 遊戲知識 綜合知識
當前位置:趣知科普吧 > 綜合知識 > 

hibernate查詢語句怎麼寫

欄目: 綜合知識 / 發佈於: / 人氣:2.37W
1. hibernate 查詢語句

因爲hibernate是封裝了JDBC的框架。

hibernate查詢語句怎麼寫

文中第一句:String queryString ="from *****";我想樓主應該知道這是HQL語句,TbArea 是你在hibertate 配置檔案中定義的名稱.propertyName + "= ?";是屬性名

這句話可以看做正常的sql語句是

select * from TbArea as a where a.屬性名 = 你在程序中傳過來的參數;

第二句:

Query queryObject = getSession().createQuery(queryString);

是hibernate裏面封裝好的方法,取得你session對象,並創建Query對象。。該對象在Hibernate中你可以瞭解爲jdbc的statement對象.

queryString就是你執行的sql語句.

第三句:

queryObject.setParameter(0, value);

queryObject我想樓主不是很熟練JDBC吧。這個對象基本和statement相似.這種寫法是最常用的,優點我不太記得。

setParameter也就是設定你第一句HQL語句中的問號。設定參數.value爲你方法中傳進來的參數

return queryObject.list();返回查詢到的多行數據,做爲列表形式返回。

2. hibernate添加語句怎麼寫

不是有映射檔案嗎?

比如你的數據庫表爲student

那麼的你就應該有hibernate.cfg.xml配置檔案和他的映射檔案hibernate.hbm.xml,最後還應該有一個student表的映射類student.java

這3個檔案.

然後你建一個實現類studentInsert

實現是

SessionFactory sf = new Configuration().configure().buildSessionFactory();

Session session = sf.openSession();

Transaction tx = session.beginTransaction();

student st=new student();

st.setId("0001");

st.setUserName("Wang");

st.setpassWord("123");

session.save(st);

tx.commit();

session.close();

就是這樣.

3. java連接mysql 用hibernate怎麼寫查詢語句

第一種方式:HQL(Hibernate Query Languge,Hibernate 查詢語言)查詢是一種面向對象的查詢語言,其中沒有表和字段的概念,只有類、對象和屬性的概念,HQL 是應用較爲廣泛的方式語法:[select/update/delete……] from Entity [where……] [group by……] [having……] [order by……](1).沒使用Spring框架的寫法:使用HQL需要四步得到Session、編寫HQL語句、創建Query對象(Query接口是HQL 查詢接口。

它提供了各種的查詢功能)、執行查詢,得到結果 sessionFactory = new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); String hql = “from Street”; Query query = session.createQuery(hql); List list = query.list();(2).使用Spring框架的寫法:String queryString = "select form entity 。.";List list=getHibernateTemplate().find(queryString);第二種方式:Criteria 查詢Criteria 查詢採用面向對象方式封裝查詢條件,又稱爲對象查詢;就是對SQL 語句進行封裝,採用對象的方式來組合各種查詢條件由Hibernate 自動產生SQL 查詢語句(1).沒使用Spring框架的寫法;Criteria由Hibernate Session進行創建SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory(); Session session = sessionFactory.openSession(); Criteria criteria = session.createCriteria(User.class); List result = criteria.list(); Iterator it = result.iterator(); (2)使用Spring框架的寫法:import org.hibernate.criterion.DetachedCriteria;DetachedCriteria criteria=DetachedCriteria.forClass(ObjectEntity.class);criteria.add(Restrictions.eq("propertyName", propertyValue));List result=getHibernateTemplate().findByCriteria(criteria);第三種方式:使用SQL語句查詢(以下都是使用了Spring框架的寫法)1).這是把執行結果放到了一個類裏:(這個類通常使用VO實體,VO實體一般就只用來接收查詢結果)List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { StringBuffer hqlBuffer = new StringBuffer(""); hqlBuffer.append("select column_Name from 。

");//裏面是SQL語句 SQLQuery sqlQuery = session.createSQLQuery(hqlBuffer.toString()); sqlQuery.addScalar("propertyName",Hibernate.STRING);//該propertyName是 ObjectVO實體的一個屬性 sqlQuery.setResultTransformer(Transformers.aliasToBean(ObjectVO.class)); List list = sqlQuery.list(); return list;//此處list集合中存放的是ObjectVO對象 } });2).返回結果放到list中的: final String queryString = "";//sql語句 List resultList=getHibernateTemplate().executeFind(new HibernateCallback() { public List doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery sqlQuery = session.createSQLQuery(queryString); List list=sqlQuery.executeUpdate(); return list; } });3).無返回結果: final String queryString = "";//SQL語句 getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery sqlQuery = session.createSQLQuery(queryString); sqlQuery.executeUpdate(); return null; } });。

4. hibernate查詢語言

1 .from 1.1單表查詢 from eg.cat as cat.其中,cat只是一個別名,爲了用其他子語句的時候書寫簡單 1.2多表查詢 from eg.Cat,eg.Dog from eg.Cat as cat,eg.Dog as dog 2 join相關 (inner) join left (outer) join right (outer) join full join HQL同樣對SQL中的這些特性支援 下面插播一個小話題,關於上邊的那些特性,我一直都沒怎麼用,今天既然說到這裏,就想 把上邊的幾個特性的用法說一下,也算對自己的一個補充: 假設有兩個表:部門、員工,下面列舉一些數據: 員工(Employee): ID Name DepNo 001 Jplateau 01 002 Jony 01 003 Camel 02 部門(Department): ID Name 01 研發部 02 營銷部 在Hibernate中我們操縱的都是對象,所以我們操縱的是部門類和員工類 1).(inner) join select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee join Department as department on employee.DepNo= department.ID (注意到條件語句我用on 沒有用where) 那麼執行結果是什麼呢? id1 name1 id2 name2 ++++++++++++++++++++++++++++++++++++++ 001 Jplateau 01 研發部 002 Jony 01 研發部 2).left (outer) join select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee left join Department as department on employee.DepNo= department.ID 那麼執行結果又該是什麼呢? id1 name1 id2 name2 ++++++++++++++++++++++++++++++++++++++ 001 Jplateau 01 研發部 002 Jony 01 研發部 003 Camel null null {就是說此時我要已第一個表的記錄多少爲準,第二個表中沒有相應紀錄的時候填充null} 3). right (outer) join select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee right join Department as department on employee.DepNo= department.ID 那麼執行結果又該是什麼呢? id1 name1 id2 name2 ++++++++++++++++++++++++++++++++++++++ 001 Jplateau 01 研發部 002 Jony 01 研發部 null null 02 營銷部 {就是說此時我要已第二個表的記錄多少爲準,第一個表中沒有相應紀錄的時候填充null} 3 大小寫敏感 4。

select語句 就是要確定你要從查詢中返回哪些對象或者哪些對象的屬性。寫幾個例子吧: select employee form Employee as employee select employee form Employee as employee where employee.Name like 'J%' select employee.Name form Employee as employee where employee.Name like 'J%' select employee.ID as id1,employee.Name as name1,department.ID as id2,department.Name as name2 from Employee as employee right join Department as department on employee.DepNo= department.ID select elements(employee.Name) from Employee as employee (不明白elements到底是做什麼用的?望給於說明) 等等 5。

數學函數 JDO目前好像還不支援此類特性。 avg(。

), sum(。), min(。

), max(。) count(*) count(。

), count(distinct 。), count(all。

) 其用法和SQL基本相同 select distinct employee.name from Employee as employee select count(distinct employee.name),count(employee) from Employee as employee 6。polymorphism (暫時不知道如何解釋?) from com.test.Animal as animal 不光得到所有Animal得實例,而且可以得到所有Animal的子類(如果我們定義了一個子類Cat) 一個比較極端的例子 from java.lang.Object as o 可以得到所有持久類的實例 7。

where語句 定義查詢語句的條件,舉幾個例子吧: from Employee as employee where employee.Name='Jplateau' from Employee as employee where employee.Name like 'J%' from Employee as employee where employee.Name like '%u' 在where語句中“=”不光可以比較對象的屬性,也可以比較對象,如: select animal from com.test.Animal as animal where animal.name=dog 8。表達式 在SQL語句中大部分的表達式在HQL中都可以使用: mathematical operators +, -, *, / binary comparison operators =, >=, <=, <>, !=, like logical operations and, or, not string concatenation || SQL scalar functions like upper() and lower() Parentheses ( ) indicate grouping in, between, is null JDBC IN parameters ? named parameters :name, :start_date, :x1 (這種應該是另一種"?"的變通解決方法) SQL literals 'foo', 69, '1970-01-01 10:00:01.0' Java public static final constants eg.Color.TABBY 其他不必解釋了,在這裏我只想對查詢中的參數問題說明一下: 大家知道在SQL中進行傳遞參數進行查詢的時候,我們通常用PreparedStatement,在語句中寫一大堆的“?”, 在hql中也可以用這種方法,如: List mates = sess.find( "select employee.name from Employee as employee " + "where employee.Name=? ", name, Hibernate.STRING ); (說明:上面利用Session裏的find方法,在hibernate的api Session中重載了很多find方法,它可以滿。

Tags:語句 hibernate