今天玩Hibernate时突然就想写写SQL语句查询。。。
DAO :
//查询
public List<?> createSqlQueryList(final String queryString);
//修改
public Boolean createSqlUpdate(final String queryString);
DAOImpl:
/**
* sqlQuery 返回list
*/
public List<?> createSqlQueryList(final String queryString) {
return (List<?>) getHibernateTemplate().execute(
new HibernateCallback<Object>() {
public List<?> doInHibernate(
org.hibernate.Session session)
throws org.hibernate.HibernateException {
SQLQuery query = session.createSQLQuery(queryString);//执行session语句!
List<?> rows = query.list();
if (session != null && session.isConnected()) {
session.close();
}
return rows;
}
});
}
/**
* sqlQuery 执行sql语句修改方法
*/
public Boolean createSqlUpdate(final String queryString) {
return (Boolean) getHibernateTemplate().execute(
new HibernateCallback<Object>() {
public Boolean doInHibernate(
org.hibernate.Session session)
throws org.hibernate.HibernateException {
session.createSQLQuery(queryString).executeUpdate();//执行语句.executeUpdate方法
if (session != null && session.isConnected()) {
session.close();
}
return true;
}
});
}
注意(区别):
- ResultSet executeQuery(String sql); 执行SQL查询,并返回ResultSet 对象。
- int executeUpdate(String sql); 可执行增,删,改,返回执行受到影响的行数。
- boolean execute(String sql); 可执行任何SQL语句,返回一个布尔值,表示是否返回ResultSet 。