有如下两个点总结:
1,如果检索自定义对象,在数据库表中找不到匹配数据,将返回什么呢?
public UserInfo getUser4Login(Map<String, String> map){
UserInfo user = null;
SqlMapClient sqlClient = CommonsDAO.getClient();
try {
// TODO 调试确认,如果没有检索到数据,返回的是什么?非空代码有必要吗?强转出错不考虑,因为所有代码的返回类型是我来约束的
Object obj = sqlClient.queryForObject("selUser4Login", map);
if(null != obj){
user = (UserInfo)obj;
}
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
经过调试确认,将返回的是空。所以,务必进行非空判断,而不是直接强转,否则,可能出现空指针异常。
2,如果要让控制台显示iBatis的SQL日志,怎么配置呢?
以web项目开发为例,在src根目录下添加log4j.properties文件,其中包含如下内容:
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