iBatis微总结(数据检索及日志输出配置)

有如下两个点总结:

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

相关推荐