hibernate sql查詢語句
既然你的項目繼承了hibernateDaoSupoort,并且是由spring來管理的那么,我想應該實在*中配置的sessionFactory或者getTemplate來注入數據庫連接的,既然如此在hibernateDaoSupport的繼承類中可以得到寫很多的封裝查詢、添加、刪除操作,只需要把方法加入一個抽象類去實現就好了
不過你要通過sql語句去實現的話
因為已經注入了數據庫連接到hibernateDaoSupport中.所以你也繼承到了兩個數據庫連接方法getSession() 和 getHibernateTemplate()
直接用就可以了
hibernate對SQL語句的使用
如下代碼:
(注意該類繼承自HibernateDaoSupport ,要在*中將sessionFactory注入此類中)
public class DaoUtil extends HibernateDaoSupport {
public Object executeMySQL(final String sql){
*n(sql);
return getHibernateTemplate().execute( new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Connection CurConn = *tion();
PreparedStatement ps = *eStatement(sql);
*e();
*();
*();
return null;
}
} );
}
public Object executeBetchSQL(final ArrayList sqlList){
return getHibernateTemplate().execute( new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Connection CurConn = *tion();
int count = *();
for(int i=0;i//*n(*(i));
PreparedStatement ps = *eStatement(*(i));
*e();
*();
*();
}
return null;
}
} );
}
public static DaoUtil getFromApplicationContext(
ApplicationContext ctx) {
return (DaoUtil) *n("DaoUtil");
}
}
怎么用Hibernate寫SQL里的in式的子查詢
我寫個簡單的例子,樓主可以參考下public int getLogin(String username,String password)
{ String sql="select * from user_table where username=? and password=?";
SQLQuery query=getSession().createSQLQuery(sql).addEntity(*);
*ing(0,username);
*ing(1,password);
return *nt(*Result().toString());
}
public static void main(String[] args) {
new UserTableDAO().getLogin("zhang","yuan");
}
hibernate 能用sql語句嗎
當然可以的 我發一段 我項目中用的。 可不可以 你要查API啊 API說可以就可以 說不可以就不可以啦~~~
/**
* 使用hql語句進行分頁查詢
* @param hql 需要查詢的hql語句
* @param value 如果hql有一個參數需要傳入,value就是傳入hql語句的參數
* @param offset 第一條記錄索引
* @param pageSize 每頁需要顯示的記錄數
* @return 當前頁的所有記錄
*/
public List findByPage(final String hql , final Object value ,
final int offset, final int pageSize)
{
//通過一個HibernateCallback對象來執行查詢
List list = getHibernateTemplate()
.executeFind(new HibernateCallback()
{
//實現HibernateCallback接口必須實現的方法
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
//執行Hibernate分頁查詢
List result = *Query(hql)
//為hql語句傳入參數
.setParameter(0, value)
.setFirstResult(offset)
.setMaxResults(pageSize)
.list();
return result;
}
});
return list;
}
HIBERNATE怎樣查看sql語句
弄hibernate時,想顯示sql語句,可以設置show_sql為true來達到這個目的,但是參數值全是像PreparedStatement一樣,用?來代替的。
用p6spy可以達到顯示的那些參數原值的目的,但可讀性差。可以利用SQL Profiler來處理這個事情。
p6spy:
SQL Profile:
p6spy安裝:
* 將*放到WEB-INF/lib目錄下,將*ties放到WEB-INF/classes目錄下。
* 修改你 原有 JDBC Driver為:*.P6SpyDriver
* 修改 *ties 中的 realdriver 值為 原有 的JDBC Driver,比如我的是:*
* 完成,運行web server。
我的日志記錄產生在 %TOMCAT_HOME%\bin下,此log位置可以能過修改 logfile = x:\x_dir\* 來控制
打開看看,看里面的日志是不是看起來比較不爽?下面我們安裝SQL Profiler來讓自已的視線爽一點。
SQL Profiler安裝:(須p6spy成功安裝)
* 將SQL Profiler自帶的*ties覆蓋原來的classes目錄下文件
* 修改現在*ties中realdriver 值為 原有 的JDBC Driver
看后看看readme注意這幾句 ^__^ :
1. Start the GUI
2. Start the webapp, in starts doing some JDBC requests we will ignore
3. Press the "reset" button on the GUI
4. Make a request to the webapp
5. Press the "pause" button after the request has finished executing
6. Press the "report" button to save profiling results as a CSV file
* 我們先用java -jar * 運行 sql profiler
* 然后啟動web server :-)
一切盡在眼前了吧?
如何用hibernate直接進行SQL語句查詢
如何用hibernate直接進行SQL語句查詢
public int getLogin(String username,String password)
{ String sql="select * from user_table where username=? and password=?";
SQLQuery query=getSession().createSQLQuery(sql).addEntity(*);
*ing(0,username);
*ing(1,password);
return *nt(*Result().toString());
}
public static void main(String[] args) {
new UserTableDAO().getLogin("zhang","yuan");
}
hibernate怎么顯示sql語句
<hibernate-configuration>
<session-factory>
<property name="*e">mysql</property>
<mapping resource="com/chenhui/bean/*" />
<mapping resource="com/chenhui/bean/*" />
<mapping resource="com/chenhui/bean/*" />
<mapping resource="com/chenhui/bean/*" />
<property name="dialect">
*ialect
</property>
<property name="*">
jdbc:mysql://localhost:3306/video
</property>
<property name="*me">root</property>
<property name="*rd">123</property>
<property name="*_class">
*
</property>
<property name="*_sql">true</property><;!-- 配置顯示sql語句 -->
<property name="format_sql">true</property><;!-- 讓輸出的sql語句格式化 -->
</session-factory>
</hibernate-configuration>
hibernate sql語句參數為null時,如何處理
目的:刪除滿足條件的數據。
出現問題:參數為null時,程序出現異常。
問題描述:之前代碼如下:
sql="delete table where pId=? and sId=?"; *ameter(0, pId); *ameter(1, sId); 現在遇到一個問題,就是如果參數傳一個null的時候,hibernate不會將sql轉換成is null,程序將會出現錯誤,所以修改成如下:
//兩個參數均不是主鍵 public void deleteTable(Long sId, Long pId) { String sql = "delete table where 1=1"; if (null == pId) { sql = sql + " and pIdis null"; } else { sql = sql + " and pId=?"; } if (null == sId) { sql = sql + " and sIdis null"; } else { sql = sql + " and sId=?"; } Query query = getSession().createQuery(sql); //這樣判斷簡直讓人崩潰,有啥好的處理方式? if (null != pId && null == sId) { *ameter(0, pId); } if (null != pId && null != sId) { *ameter(0, pId).setParameter(1, pId); } if (null == pId && null != sId) { *ameter(0, pId); } *eUpdate(); } 這樣是可以實現業務邏輯的,但是顯然程序很笨重,不知到hibernate本身有沒有靈活、優雅的方式解決這個問題?
轉載請注明出處華閱文章網 » hibernatesqlin語句