當前位置:首頁 » 編程語言 » ibatis輸出sql

ibatis輸出sql

發布時間: 2022-08-18 17:09:04

① mybatis怎麼輸出sql語句

#將ibatis log4j運行級別調到DEBUG可以在控制台列印出ibatis運行的sql語句

log4j.rootLogger=debug,stdout,logfile
### 把日誌信息輸出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
### 把日誌信息輸出到文件:jbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=D:/test.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n

###顯示SQL語句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

② Ibatis如何列印SQL語句

方法:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
把這段配置放到log4j.properties文件中即可。
在項目試運行需要維護得階段可以把debug改為error,這樣伺服器後台只列印報錯信息,這樣既可以看清錯誤又可以減輕伺服器負擔(後台不斷列印數據很消耗伺服器資源的)

③ ibatis控制台輸出了sql語句,但資料庫沒有變化,把控制台的sql在資料庫執行,資料庫正常更新了

貼出錯誤的原因的哈,沒有看到。

④ Ibatis中如何才能顯示生成的SQL語句

# SqlMap logging configuration...
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

⑤ 如何設置ibatis 後台列印完整的sql語句

#將ibatis log4j運行級別調到DEBUG可以在控制台列印出ibatis運行的sql語句
log4j.rootLogger=debug,stdout,logfile

⑥ 怎麼在控制台輸出sql語句

# Print SQL
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG, A1

⑦ 怎麼從ibatis中獲取SQL

如何從ibatis中獲取SQL

以下是在網上搜到的辦法:

運行期從ibatis配置文件中獲取sql的兩種方法
運行期從ibatis配置文件中獲取sql
1.通過SqlMapClientDaoSupport,SqlMapClientImpl,MappedStatement,Sql,RequestScope等ibatis提供的類

public List<UserInfo> getUserList(UserInfo userInfo) {
String sql = null;
SqlMapClientImpl sqlmap = (SqlMapClientImpl) this.getSqlMapClient();
MappedStatement stmt = sqlmap.getMappedStatement("getUserInfoList");
Sql stmtSql = stmt.getSql();

RequestScope requestScope = new RequestScope();
requestScope.setStatement(stmt);
sql = stmtSql.getSql(requestScope, userInfo);
System.out.println(sql);
return null;
}

註:這個方法我是寫在中的,該 extends SqlMapClientDaoSupport,所以上述就可以直接this調用getSqlMapClient()方法,

2.通過SqlMapExecutorDelegate,MappedStatement,Sql,RequestScope等ibatis提供的類
public List<UserInfo> getUserList(UserInfo userInfo) {
SqlMapExecutorDelegate delegate=((ExtendedSqlMapClient)
(getSqlMapClientTemplate().getSqlMapClient())).getDelegate();

MappedStatement ms = delegate.getMappedStatement("getUserInfoList");
Sql sql=ms.getSql();
RequestScope requestScope = new RequestScope();
requestScope.setStatement(ms);
String sqlStr = sql.getSql(requestScope,userInfo);
System.out.println(sqlStr);
}

註:這兩個例子中用到的類都是ibatis官方jar文件中的,快速導入即可,"getUserInfoList"為ibatis的xml文件中配置的id,getSql(,)
中第二個參數就是要傳遞的參數對象。

上述寫法完全可以再簡化,上述只是簡單介紹,可供參考.......

參考:http://hi..com/iany/item/254166ffaef7a3e81a111f71

但是以上方法有點問題,ibatis參數有$和#之分,當#的時候,獲取出來的SQL是含有?號的。

我想ibatis一定也是最後使用的是JDBC的一種實現,所以就debug了一下源代碼。
看了一下,總結了一下,可以這樣實現:

package com.seven.dbTools.ibatis;

import java.util.HashMap;
import java.util.Map;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.ibatis.sqlmap.engine.impl.SqlMapClientImpl;
import com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap;
import com.ibatis.sqlmap.engine.mapping.sql.Sql;
import com.ibatis.sqlmap.engine.scope.RequestScope;
import com.ibatis.sqlmap.engine.mapping.statement.MappedStatement;

public class IbatisUtil extends SqlMapClientDaoSupport {

/**
* get sql from ibatis :從ibatis中獲取sql已經動態參數
* @param sqlid : sqlMap中的id
* @param parameterMap : 參數map
* @return
*/
public Map<String, Object[]> getSqlAndParametersFromIbatis(String sqlid,
Map parameterMap) {
String sql = null;
SqlMapClientImpl sqlmap = (SqlMapClientImpl) this.getSqlMapClient();
MappedStatement stmt = sqlmap.getMappedStatement(sqlid);
Sql stmtSql = stmt.getSql();
RequestScope requestScope = new RequestScope();
requestScope.setStatement(stmt);
ParameterMap dynamicParameterMap = stmtSql.getParameterMap(
requestScope, parameterMap);
Object[] values = null;
if (dynamicParameterMap != null) {
values = dynamicParameterMap.getParameterObjectValues(requestScope,
parameterMap);
}
sql = stmtSql.getSql(requestScope, parameterMap);
Map<String, Object[]> sqlMap = new HashMap<String, Object[]>();
sqlMap.put(sql, values);
return sqlMap;
}

}

以上代碼得到SQL和動態的參數。

⑧ IBatis 怎樣直接執行SQL語句

ibatis中,參數部分是用##表示的,這種格式的是字元串,會自動在內容兩端加上單引號,$$表示的是原樣輸出,你這里有兩個參數,且要求的是數值,所以要用$$,那麼在ibatis的xml配置文件中,寫法就是:
select *
from table

limit $count1$, $count2$.
而在java中,通過調用ibatis框架中的方法,將count1和count2變數的值傳遞進去就可以了。

熱點內容
路由器管理密碼是什麼忘了怎麼辦 發布:2025-01-19 20:34:35 瀏覽:427
java方法定義 發布:2025-01-19 20:20:50 瀏覽:404
kr腳本 發布:2025-01-19 20:17:41 瀏覽:518
幫我開啟存儲 發布:2025-01-19 20:17:39 瀏覽:813
s9存儲縮水 發布:2025-01-19 20:08:06 瀏覽:335
2b2t的伺服器編號是什麼 發布:2025-01-19 19:58:55 瀏覽:874
androidstudio下載與安裝 發布:2025-01-19 19:58:14 瀏覽:560
拉鉤演算法 發布:2025-01-19 19:58:14 瀏覽:866
python中讀取文件 發布:2025-01-19 19:37:26 瀏覽:369
網吧電腦連接到steam伺服器錯誤 發布:2025-01-19 19:37:17 瀏覽:602