当前位置:首页 » 编程语言 » 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变量的值传递进去就可以了。

热点内容
outlook2010邮件加密 发布:2025-09-16 19:56:00 浏览:418
安卓开发公司哪个好 发布:2025-09-16 19:44:55 浏览:540
java编译项目 发布:2025-09-16 19:39:15 浏览:554
python爬虫数据分析 发布:2025-09-16 19:04:15 浏览:534
安卓录屏大师怎么直播 发布:2025-09-16 18:51:52 浏览:930
电脑怎么解压文件步骤 发布:2025-09-16 18:32:10 浏览:390
编译器默认构造函数内联 发布:2025-09-16 18:30:40 浏览:260
密码忘了怎么改 发布:2025-09-16 18:29:54 浏览:160
金盾加密视频版本识别 发布:2025-09-16 18:22:02 浏览:551
二手车宝马320li17年有哪些配置 发布:2025-09-16 17:59:32 浏览:892