还是最初的那个例子:http://blog.csdn.net/kunshan_shenbin/archive/2008/09/02/2864883.aspx
示例代码如下:
1.package com.hb3.pack_01;<br />2.<br />3.import java.util.Iterator;<br />4.5.import org.hibernate.Query;<br />6.import org.hibernate.SQLQuery;<br />7.import org.hibernate.Session;<br />8.import org.hibernate.SessionFactory;<br />9.import org.hibernate.cfg.Configuration;<br />10.11.import com.hb3.pack_01.model.User;<br />12.13.public class BusinessService {<br />14.15. public static void main(String[] args) {<br />16.<br />17. Configuration config = new Configuration().configure();<br />18. SessionFactory sessionFactory = config.buildSessionFactory();<br />19. Session session = sessionFactory.openSession();<br />20.<br />21. String sql = "select {user.*} from User user where user.age > ?";<br />22. SQLQuery sqlQuery = session.createSQLQuery(sql);<br />23. sqlQuery.setParameter(0, 20);<br />24. sqlQuery.addEntity("user", User.class);<br />25. Iterator<?> iterator = sqlQuery.list().iterator();<br />26. while(iterator.hasNext()) {<br />27. User user = (User) iterator.next();<br />28. System.out.println(user.getAge() + "/t" + user.getName());<br />29. }<br />30.<br />31. Query query = session.getNamedQuery("com.hb3.pack_01.model.User.SQLQueryUser");<br />32. query.setInteger("age", 20);<br />33. iterator = query.list().iterator();<br />34. while(iterator.hasNext()) {<br />35. User user = (User) iterator.next();<br />36. System.out.println(user.getAge() + "/t" + user.getName());<br />37. }<br />38.39. session.close();<br />40. sessionFactory.close();<br />41. }<br />42.}
修改User.hbm.xml文件如下:
1.<?xml version="1.0" encoding="UTF-8"?><br />2.3.<!DOCTYPE hibernate-mapping PUBLIC<br />4. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />5. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">6.7.<hibernate-mapping>8. <class name="com.hb3.pack_01.model.User" table="user"<br />9. dynamic-insert="true"<br />10. dynamic-update="true"<br />11. >12. <id name="id" column="id" type="java.lang.Integer" unsaved-value="null">13. <generator class="native" />14. </id>15.<br />16. <property name="name" column="name" type="java.lang.String" />17.<br />18. <property name="age" column="age" type="java.lang.Integer" />19. </class>20.<br />21. <query name="com.hb3.pack_01.model.User.QueryUser">22. <![CDATA[<br />23. from User as user where user.age > :minAge<br />24. ]]>25. </query>26.<br />27. <sql-query name="com.hb3.pack_01.model.User.SQLQueryUser">28. <![CDATA[<br />29. select {user.*} from User user where user.age > :age<br />30. ]]><br />31. <return alias="user" class="com.hb3.pack_01.model.User"/>32. </sql-query>33.<br />34.</hibernate-mapping>
运行结果:
17:20:40,859 WARN ConfigurationFactory:127 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/Java/MyEclipse%206.0/workspace/hb3demo/ehcache-1.2.3.jar!/ehcache-failsafe.xml<br />17:20:41,281 WARN EhCacheProvider:93 - Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.<br />17:20:41,312 WARN EhCacheProvider:93 - Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.<br />Hibernate: select user.id as id0_0_, user.name as name0_0_, user.age as age0_0_ from User user where user.age > ?<br />28 shenbin<br />24 chenyan<br />23 shenyi<br />23 yangye<br />22 chenyong<br />Hibernate: select user.id as id0_0_, user.name as name0_0_, user.age as age0_0_ from User user where user.age > ?<br />28 shenbin<br />24 chenyan<br />23 shenyi<br />23 yangye<br />22 chenyong
另外,我们还可以自定义insert、update、delete时的SQL文而不使用Hibernate3自动生成的SQL文。
修改User.hbm.xml文件如下:
1.<?xml version="1.0" encoding="UTF-8"?><br />2.3.<!DOCTYPE hibernate-mapping PUBLIC<br />4. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"<br />5. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">6.7.<hibernate-mapping>8. <class name="com.hb3.pack_01.model.User" table="user"<br />9. dynamic-insert="true"<br />10. dynamic-update="true"<br />11. >12. <id name="id" column="id" type="java.lang.Integer" unsaved-value="null">13. <generator class="native" />14. </id>15.<br />16. <property name="name" column="name" type="java.lang.String" />17.<br />18. <property name="age" column="age" type="java.lang.Integer" />19.<br />20. <sql-insert>21. <!-- INSERT INTO user (name, age) VALUES (?, ?) -->22. INSERT INTO user VALUES (?, ?) <br />23. </sql-insert>24. <sql-update>25. UPDATE user SET name=?, age=?, WHERE id=?<br />26. </sql-update>27. <sql-delete>28. DELETE FROM user WHERE id=?<br />29. </sql-delete>30.<br />31. </class>32.<br />33. <query name="com.hb3.pack_01.model.User.QueryUser">34. <![CDATA[<br />35. from User as user where user.age > :minAge<br />36. ]]>37. </query>38.<br />39. <sql-query name="com.hb3.pack_01.model.User.SQLQueryUser">40. <![CDATA[<br />41. select {user.*} from User user where user.age > :age<br />42. ]]><br />43. <return alias="user" class="com.hb3.pack_01.model.User"/>44. </sql-query>45.<br />46.</hibernate-mapping>
示例代码:
1.package com.hb3.pack_01;<br />2.<br />3.import org.hibernate.Session;<br />4.import org.hibernate.SessionFactory;<br />5.import org.hibernate.Transaction;<br />6.import org.hibernate.cfg.Configuration;<br />7.8.import com.hb3.pack_01.model.User;<br />9.10.public class BusinessService {<br />11.12. public static void main(String[] args) {<br />13.<br />14. Configuration config = new Configuration().configure();<br />15. SessionFactory sessionFactory = config.buildSessionFactory();<br />16. Session session = sessionFactory.openSession();<br />17.18. User user = new User();<br />19. user.setName("yanfeng");<br />20. user.setAge(21);<br />21. Transaction tx = session.beginTransaction();<br />22. session.save(user);<br />23. tx.commit();<br />24.<br />25. session.close();<br />26. sessionFactory.close();<br />27. }<br />28.}
测试结果如下:
17:29:03,781 WARN ConfigurationFactory:127 - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/Java/MyEclipse%206.0/workspace/hb3demo/ehcache-1.2.3.jar!/ehcache-failsafe.xml17:29:04,328 WARN EhCacheProvider:93 - Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.17:29:04,359 WARN EhCacheProvider:93 - Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.Hibernate: insert into user (name, age) values (?, ?)
可见,在实行保存操作时的SQL确实是我们在配置文件中定义的SQL文。
将来靠自己双掌;愿你用双掌开拓出美好的梦想。