今天玩Hibernate時突然就想寫寫SQL語句查詢。。。
DAO :
1 //查詢 2 public List<?> createSqlQueryList(final String queryString); 3 //修改 4 public Boolean createSqlUpdate(final String queryString);
DAOImpl:
1 /** 2 * sqlQuery 返回list 3 */ 4 public List<?> createSqlQueryList(final String queryString) { 5 return (List<?>) getHibernateTemplate().execute( 6 new HibernateCallback<Object>() { 7 public List<?> doInHibernate( 8 org.hibernate.Session session) 9 throws org.hibernate.HibernateException { 10 SQLQuery query = session.createSQLQuery(queryString);//執行session語句! 11 List<?> rows = query.list(); 12 if (session != null && session.isConnected()) { 13 session.close(); 14 } 15 return rows; 16 } 17 }); 18 }
1 /** 2 * sqlQuery 執行sql語句修改方法 3 */ 4 public Boolean createSqlUpdate(final String queryString) { 5 return (Boolean) getHibernateTemplate().execute( 6 new HibernateCallback<Object>() { 7 public Boolean doInHibernate( 8 org.hibernate.Session session) 9 throws org.hibernate.HibernateException { 10 session.createSQLQuery(queryString).executeUpdate();//執行語句.executeUpdate方法 11 if (session != null && session.isConnected()) { 12 session.close(); 13 } 14 return true; 15 } 16 }); 17 }
注意(區別):
- ResultSet executeQuery(String sql); 執行SQL查詢,並返回ResultSet 對象。
- int executeUpdate(String sql); 可執行增,刪,改,返回執行受到影響的行數。
- boolean execute(String sql); 可執行任何SQL語句,返回一個布爾值,表示是否返回ResultSet 。