??? 1。文件的映射。由于使用 MyEclipse(傻瓜版^_^) 所以 hibernate工具(extensions,Middlegen,tools等)一直沒好好研究這就不獻(xiàn)丑了。
??? 2。Criteria
??? ?? 1)查詢條件通過 Criteria.add 添加 Expression 用于描述條件
??? ??? ??? ??? Expression.( and or like in le lt ..... )
??? ?? ?? ?? ?? 參見: Criteria查詢
??? ?? 2)criteria.setFirstResult(100);
??? ??? ? criteria.setMaxResults(20); //檢索范圍
??? ??? ? criteria.addOrder(Order.asc("name")); //排序
??? ??? ? .add( Expression.sql("lower($alias.name) like lower(?)", "Fritz%", Hibernate.STRING)?? //直接嵌入SQL
??? ?? 3)Cat cat = new Cat();
??? ?? ?? ....
??? ???? List results = session.createCriteria(Cat.class).add( Example.create(cat) ).list(); //根據(jù)對象查詢
??? ?
??? 3。HQL 完全面向?qū)ο蟮模邆淅^承、多態(tài)和關(guān)聯(lián)等特性。
??? ?? 1)參見: HQL
??? ?? 2)內(nèi)連接,inner join
??? ????? 左外連接,left outer join
??? ????? 右外連接,right outer join?
??? ??? ? http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html
??? ?? ?? 代表性的語句??? ?
//簡單的 結(jié)果: 2? liukaiyi:heha
//給出對象 結(jié)果 : heha
//給出Object 結(jié)果:heha xx
//給出 Map? heha xx
//報表語句? 結(jié)果: 1
//集合內(nèi) 結(jié)果 liukaiyi:heha
//元素集(elements與indices 函數(shù)) 可以使用 any, some, all, exists, in
//EG:? from Player p where 3 > all elements(p.scores)
//使用 javaBean 綁定
??? 2。Criteria
??? ?? 1)查詢條件通過 Criteria.add 添加 Expression 用于描述條件
??? ??? ??? ??? Expression.( and or like in le lt ..... )
??? ?? ?? ?? ?? 參見: Criteria查詢
??? ?? 2)criteria.setFirstResult(100);
??? ??? ? criteria.setMaxResults(20); //檢索范圍
??? ??? ? criteria.addOrder(Order.asc("name")); //排序
??? ??? ? .add( Expression.sql("lower($alias.name) like lower(?)", "Fritz%", Hibernate.STRING)?? //直接嵌入SQL
??? ?? 3)Cat cat = new Cat();
??? ?? ?? ....
??? ???? List results = session.createCriteria(Cat.class).add( Example.create(cat) ).list(); //根據(jù)對象查詢
??? ?
??? 3。HQL 完全面向?qū)ο蟮模邆淅^承、多態(tài)和關(guān)聯(lián)等特性。
??? ?? 1)參見: HQL
??? ?? 2)內(nèi)連接,inner join
??? ????? 左外連接,left outer join
??? ????? 右外連接,right outer join?
??? ??? ? http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html
??? ?? ?? 代表性的語句??? ?
Hql.hbm.xml
????????<set?name="fkSet"?inverse="true">
????????????<key?column="id"/>
????????????<one-to-many?class="Fk"/>
????????</set>
SQL
alter?table?fk?add?constraint??FK_hf?foreign?key(id)?references?hql(id)
mysql> select * from hql;
+----+----------+
| id | name???? |
+----+----------+
|? 0 | liukaiyi |
|? 1 | heha???? |
+----+----------+
2 rows in set (0.00 sec)
mysql> select * from fk;
+----+------+
| id | name |
+----+------+
|? 0 | yy?? |
|? 1 | xx?? |
+----+------+
2 rows in set (0.00 sec)
????????<set?name="fkSet"?inverse="true">
????????????<key?column="id"/>
????????????<one-to-many?class="Fk"/>
????????</set>
SQL
alter?table?fk?add?constraint??FK_hf?foreign?key(id)?references?hql(id)
mysql> select * from hql;
+----+----------+
| id | name???? |
+----+----------+
|? 0 | liukaiyi |
|? 1 | heha???? |
+----+----------+
2 rows in set (0.00 sec)
mysql> select * from fk;
+----+------+
| id | name |
+----+------+
|? 0 | yy?? |
|? 1 | xx?? |
+----+------+
2 rows in set (0.00 sec)
//簡單的 結(jié)果: 2? liukaiyi:heha
????????Query?qu?=?se.createQuery("select?h.name?"?+
????????????????????????????????????????"?from?Hql?h?,?Fk?f"?+
????????????????????????????????????????"?where?h.id?=?f.id"?);
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(?list.size()?);
????????System.out.println(?list.get(0)+":"+list.get(1)?);
????????????????????????????????????????"?from?Hql?h?,?Fk?f"?+
????????????????????????????????????????"?where?h.id?=?f.id"?);
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(?list.size()?);
????????System.out.println(?list.get(0)+":"+list.get(1)?);
//給出對象 結(jié)果 : heha
Query?qu?=?se.createQuery("from?Hql?h?where?h.fkSet.name='xx'");
((Hql)list.get(0)).getName()?;
((Hql)list.get(0)).getName()?;
//給出Object 結(jié)果:heha xx
Query?qu?=?se.createQuery("select?h.name,f.name?from?Hql?h?join?h.fkSet?f?where?f.name='xx'");
List?list?=??qu.list()?;
tr.commit();
System.out.println(list.size());????
Object[]?objs?=?(Object[])?list.get(0)?;
System.out.println(?objs[0]?+":"+objs[1]?);
List?list?=??qu.list()?;
tr.commit();
System.out.println(list.size());????
Object[]?objs?=?(Object[])?list.get(0)?;
System.out.println(?objs[0]?+":"+objs[1]?);
//給出 Map? heha xx
????????
????????Query?qu?=?se.createQuery("select?new?map(?h.name?as?hn,f.name?as?fn)from?Hql?h?join?h.fkSet?f?where?f.name='xx'");
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(list.size());????
????????Map?map?=?((Map)list.get(0));
????????System.out.println(?map.get("hn")?);
????}
????????Query?qu?=?se.createQuery("select?new?map(?h.name?as?hn,f.name?as?fn)from?Hql?h?join?h.fkSet?f?where?f.name='xx'");
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(list.size());????
????????Map?map?=?((Map)list.get(0));
????????System.out.println(?map.get("hn")?);
????}
//報表語句? 結(jié)果: 1
????????Query?qu?=?se.createQuery("select?count(*)?from?Hql?h?join?h.fkSet?f?"?+
????????????????????????????????????????"?where?h.name='heha'?and?h.id=f.id?"?+
????????????????????????????????????????"?group?by?h.name?");
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(?list.get(0)?);
????????????????????????????????????????"?where?h.name='heha'?and?h.id=f.id?"?+
????????????????????????????????????????"?group?by?h.name?");
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(?list.get(0)?);
//集合內(nèi) 結(jié)果 liukaiyi:heha
//元素集(elements與indices 函數(shù)) 可以使用 any, some, all, exists, in
//EG:? from Player p where 3 > all elements(p.scores)
+----+----------+
| id | name???? |
+----+----------+
|? 0 | liukaiyi |
|? 1 | heha???? |
|? 3 | oo?????? |
+----+----------+
?? ????
??? ??? Query?qu?=?se.createQuery("select?h.name?"?+
????????????????????????????????????????"?from?Hql?h"?+
????????????????????????????????????????"?where?h.id?in?elements(h.fkSet.id)?"?);
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(?list.get(0)+":"+list.get(1)?);
| id | name???? |
+----+----------+
|? 0 | liukaiyi |
|? 1 | heha???? |
|? 3 | oo?????? |
+----+----------+
?? ????
??? ??? Query?qu?=?se.createQuery("select?h.name?"?+
????????????????????????????????????????"?from?Hql?h"?+
????????????????????????????????????????"?where?h.id?in?elements(h.fkSet.id)?"?);
????????List?list?=??qu.list()?;
????????tr.commit();
????????System.out.println(?list.get(0)+":"+list.get(1)?);
//使用 javaBean 綁定
Query?q?=?s.createQuery("from?foo?Foo?as?foo?where?foo.name=:name?and?foo.size=:size");
q.setProperties(fooBean);?//?fooBean包含方法getName()與getSize()
List?foos?=?q.list();
q.setProperties(fooBean);?//?fooBean包含方法getName()與getSize()
List?foos?=?q.list();