怎么把mapper生成的sql打印出来
时间: 2023-09-23 20:08:25 浏览: 141
在使用Mybatis时,可以通过设置日志级别来打印出mapper生成的SQL语句。具体步骤如下:
1. 在log4j.properties或logback.xml等日志配置文件中,将Mybatis的日志级别设置为DEBUG或TRACE级别,例如:
```
log4j.logger.org.apache.ibatis=DEBUG
```
2. 在Mybatis的配置文件中,添加如下配置:
```
<configuration>
...
<settings>
...
<setting name="logImpl" value="LOG4J"/>
...
</settings>
...
</configuration>
```
其中,logImpl属性指定了Mybatis使用的日志实现框架,在本例中指定为log4j。
3. 在执行查询时,可以通过在日志中查看到Mybatis生成的SQL语句。例如:
```
public interface UserMapper {
@Select("select * from user where id = #{id}")
User getUserById(int id);
}
SqlSession session = sqlSessionFactory.openSession();
try {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
} finally {
session.close();
}
```
在控制台中,可以看到类似以下的输出:
```
DEBUG [main] - o.a.i.t.JdbcTransaction.openConnection() - Opening JDBC Connection
DEBUG [main] - o.a.i.t.JdbcTransaction.getTransactionLog() - ==> Preparing: select * from user where id = ?
DEBUG [main] - o.a.i.t.JdbcTransaction.getTransactionLog() - ==> Parameters: 1(Integer)
DEBUG [main] - o.a.i.t.JdbcTransaction.openConnection() - Created connection 1031165799.
DEBUG [main] - o.a.i.t.JdbcTransaction.getTransactionLog() - <== Columns: id, username, password
DEBUG [main] - o.a.i.t.JdbcTransaction.getTransactionLog() - <== Row: 1, test, 123456
DEBUG [main] - o.a.i.t.JdbcTransaction.closeConnection() - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@7afbc479]
```
其中,Preparing后面的语句即为Mybatis生成的SQL语句,Parameters后面的值为SQL语句中的参数。
阅读全文