Ibatis 简明教程
iBATIS - Debugging
在使用 iBATIS 时调试你的程序很容易。iBATIS 内置有日志记录支持,它与以下日志库协作,并按此顺序搜索它们。
-
Jakarta Commons Logging (JCL).
-
Log4J
-
JDK logging
你可以将上面列出的任何库与 iBATIS 一起使用。
Debugging with Log4J
假设你打算使用 Log4J 进行日志记录。在继续操作之前,你需要交叉检查以下几点 −
-
Log4J JAR 文件 (log4j-{version}.jar) 应在 CLASSPATH 中。
-
CLASSPATH 中有 log4j.properties。
以下是 log4j.properties 文件。请注意,有些行已注释。如果你需要其他调试信息,你可以取消它们的注释。
# Global logging configuration
log4j.rootLogger = ERROR, stdout
log4j.logger.com.ibatis = DEBUG
# shows SQL of prepared statements
#log4j.logger.java.sql.Connection = DEBUG
# shows parameters inserted into prepared statements
#log4j.logger.java.sql.PreparedStatement = DEBUG
# shows query results
#log4j.logger.java.sql.ResultSet = DEBUG
#log4j.logger.java.sql.Statement = DEBUG
# Console output
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %5p [%t] − %m%n
你可以在 Apaches 网站上找到 Log4J 的完整文档− Log4J Documentation 。
iBATIS Debugging Example
下面的 Java 类是一个非常简单的例子,它初始化 Log4J 日志库并随后将它用于 Java 应用程序。我们将使用前面提到的位于 CLASSPATH 中的属性文件。
import org.apache.log4j.Logger;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class IbatisUpdate{
static Logger log = Logger.getLogger(IbatisUpdate.class.getName());
public static void main(String[] args) throws IOException,SQLException{
Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
/* This would insert one record in Employee table. */
log.info("Going to update record.....");
Employee rec = new Employee();
rec.setId(1);
rec.setFirstName( "Roma");
smc.update("Employee.update", rec );
log.info("Record updated Successfully ");
log.debug("Going to read records.....");
List <Employee> ems = (List<Employee>)
smc.queryForList("Employee.getAll", null);
Employee em = null;
for (Employee e : ems) {
System.out.print(" " + e.getId());
System.out.print(" " + e.getFirstName());
System.out.print(" " + e.getLastName());
System.out.print(" " + e.getSalary());
em = e;
System.out.println("");
}
log.debug("Records Read Successfully ");
}
}
Compilation and Run
首先,确保在继续编译和执行之前你已适当地设置 PATH 和 CLASSPATH。
-
按上述方式创建 Employee.xml。
-
按上述方式创建 Employee.java 并对其进行编译。
-
如上所示创建 IbatisUpdate.java 并编译它。
-
创建上面所示的 log4j.properties。
-
执行 IbatisUpdate 二进制文件来运行程序。
你将得到以下结果。EMPLOYEE 表中的一条记录将被更新,然后从 EMPLOYEE 表中读取同一条记录。
DEBUG [main] - Created connection 28405330.
DEBUG [main] - Returned connection 28405330 to pool.
DEBUG [main] - Checked out connection 28405330 from pool.
DEBUG [main] - Returned connection 28405330 to pool.
1 Roma Ali 5000
2 Zara Ali 5000
3 Zara Ali 5000