iBATIS - Gỡ lỗi
Dễ dàng gỡ lỗi chương trình của bạn khi làm việc với iBATIS. iBATIS có hỗ trợ ghi nhật ký tích hợp và nó hoạt động với các thư viện ghi nhật ký sau và tìm kiếm chúng theo thứ tự này.
- Jakarta Commons Logging (JCL).
- Log4J
- Ghi nhật ký JDK
Bạn có thể sử dụng bất kỳ thư viện nào được liệt kê ở trên cùng với iBATIS.
Gỡ lỗi bằng Log4J
Giả sử bạn sẽ sử dụng Log4J để ghi nhật ký. Trước khi tiếp tục, bạn cần kiểm tra kỹ các điểm sau:
- Tệp Log4J JAR (log4j- {version} .jar) phải nằm trong CLASSPATH.
- Bạn có log4j.properties có sẵn trong CLASSPATH.
Sau đây là tệp log4j.properties. Lưu ý rằng một số dòng được chú thích. Bạn có thể bỏ ghi chú chúng nếu bạn cần thêm thông tin gỡ lỗi.
# 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
Bạn có thể tìm thấy tài liệu đầy đủ cho Log4J từ trang Apaches - Tài liệu Log4J .
Ví dụ về gỡ lỗi iBATIS
Lớp Java sau đây là một ví dụ rất đơn giản khởi tạo và sau đó sử dụng thư viện ghi nhật ký Log4J cho các ứng dụng Java. Chúng tôi sẽ sử dụng tệp thuộc tính được đề cập ở trên nằm trong 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 ");
}
}
Biên dịch và Chạy
Trước hết, hãy đảm bảo rằng bạn đã đặt PATH và CLASSPATH thích hợp trước khi tiến hành biên dịch và thực thi.
- Tạo Employee.xml như hình trên.
- Tạo Employee.java như hình trên và biên dịch nó.
- Tạo IbatisUpdate.java như hình trên và biên dịch nó.
- Tạo log4j.properties như hình trên.
- Thực thi nhị phân IbatisUpdate để chạy chương trình.
Bạn sẽ nhận được kết quả sau. Bản ghi sẽ được cập nhật trong bảng EMPLOYEE và sau đó, bản ghi tương tự sẽ được đọc từ bảng 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
Phương pháp gỡ lỗi
Trong ví dụ trên, chúng tôi chỉ sử dụng info() , tuy nhiên bạn có thể sử dụng bất kỳ phương pháp nào sau đây theo yêu cầu của bạn -
public void trace(Object message);
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);