[Seasar-user:2321] [要望][S2Dao] テーブル名に"_"を持つ場合の自動マッピング

Hirotaka HONMA manholex
2005年 7月 3日 (日) 00:00:33 JST


本間です。

S2Dao 1.0.25で

>>
カラム名に_がある場合でも自動的にマッピングできるようにしました。
<<

と対応されていますが、テーブル名も同様に自動マッピングして
いただけないでしょうか?

BeanMetaDataImpl.javaのsetupTableName近辺を下記のようにすると
OKかと思います。

>||
private Pattern pattern_ = Pattern.compile("[^A-Z$][A-Z]");

protected void setupTableName(BeanDesc beanDesc, DatabaseMetaData dbMetaData) {
    if (beanDesc.hasField(TABLE)) {
        Field field = beanDesc.getField(TABLE);
        tableName_ = (String) FieldUtil.get(field, null);
    } else {
        String shortClassName = ClassUtil.getShortClassName(getBeanClass());
        if (isExistTable(dbMetaData, shortClassName)) {
            tableName_ = shortClassName;
        } else {
            Matcher m = pattern_.matcher(shortClassName);
            StringBuffer sb = new StringBuffer();
            while (m.find()) {
                String group0 = m.group(0);
                m.appendReplacement(sb, group0.substring(0, 1) + "_"
                    + group0.substring(1, 2));
            }
            m.appendTail(sb);
            tableName_ = sb.toString().toUpperCase();
        }
        tableName_ = shortClassName;
    }
}

private boolean isExistTable(DatabaseMetaData dbMetaData, String tableName) {
    ResultSet rset = null;
    try {
        rset = dbMetaData.getTables(null, null, "IDENTITYTABLE", null);
        return rset.next();
    } catch (SQLException ex) {
        throw new SQLRuntimeException(ex);
    } finally {
        ResultSetUtil.close(rset);
    }
}
||<

以上です。よろしくお願いいたします。
-- 
Hirotaka HONMA <[E-MAIL ADDRESS DELETED]>



Seasar-user メーリングリストの案内