top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
Apache iBatis の sqlMap.xml 設定ファイルを読み込んで内容を表示するシンプルなサンプルを作成しました。
Apache iBatis の sqlMap.xml 設定ファイルを読み込んで内容を表示するシンプルなサンプルを作成しました。 ParseSqlMap.java
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import com.ibatis.sqlmap.engine.builder.xml.SqlMapParser;
import com.ibatis.sqlmap.engine.builder.xml.XmlParserState;
import com.ibatis.sqlmap.engine.mapping.parameter.ParameterMapping;
import com.ibatis.sqlmap.engine.mapping.statement.MappedStatement;
import com.ibatis.sqlmap.engine.mapping.statement.StatementType;
import com.ibatis.sqlmap.engine.scope.SessionScope;
import com.ibatis.sqlmap.engine.scope.StatementScope;
/**
* sqlMap のSQL記述をパースして表示するサンプル。
*
* ibatis-2.3.4.726.jar で動作確認を実施。
*/
public class ParseSqlMap {
@SuppressWarnings("unchecked")
public static void main(final String[] args) throws Exception {
final XmlParserState parserState = new XmlParserState();
// sqlMap をパース。
final InputStream inStream = new BufferedInputStream(
new FileInputStream(new File("./test/data/Account.xml")));
try {
final SqlMapParser parser = new SqlMapParser(parserState);
parser.parse(inStream);
} finally {
inStream.close();
}
// パース結果を表示。
for (Iterator<String> iteSqlMapId = parserState.getConfig()
.getDelegate().getMappedStatementNames(); iteSqlMapId.hasNext();) {
final MappedStatement mStmt = parserState.getConfig().getDelegate()
.getMappedStatement(iteSqlMapId.next());
// sqlMap 上の id。
System.out.println("sqlMap: id: [" + mStmt.getId() + "]");
// SQLのタイプの調べ方。
if (mStmt.getStatementType() == StatementType.SELECT) {
System.out.println(" タイプ: [SELECT]");
}
// SQLを表示。
final String sql = mStmt.getSql().getSql(
new StatementScope(new SessionScope()), null);
System.out.println(" SQL: [" + sql + "]");
// パラメータを表示。
for (int indexParam = 0; indexParam < mStmt.getParameterMap()
.getParameterCount(); indexParam++) {
final ParameterMapping mapping = mStmt.getParameterMap()
.getParameterMappings()[indexParam];
System.out.println(" 入力パラメータ: [" + mapping.getPropertyName()
+ "]");
}
}
}
}
ここまで辿り着くのに、意外に手間がかかりました…。