[Seasar-user:20829] Re: dbflute実行用のsql文取得方法について聞きたいです。

kubo [E-MAIL ADDRESS DELETED]
2011年 7月 1日 (金) 15:00:48 JST


久保(jflute)です。

iafandaさん、こんにちは

> Seasar-user リスト管理人へ
自分は管理人ではありませんが、
DBFluteの内容なのでお答えしますね。
そもそも、MLは他のML参加者に知恵を借りる場所なので、
管理人の方に呼びかける必要はありませんよ。

> 上記のようにsql実行する前にsql文を取得できますが、以下のメッソドを実行する前にsql文を取得する方法を教えてください。
>         memberBhv.insert(member);
>         memberBhv.update(member);

実行する「前」にSQL文を取得する機能はありません。
もちろん、色々と改造すればできなくはないですが、
DBFluteの正式な機能としては提供していません。

実行後では不都合な業務的な理由が何かあるのでしょうか?

2011/7/1  <[E-MAIL ADDRESS DELETED]>:
> Seasar-user リスト管理人へ
>
> いつもお世話になっております。
> iafandaです。
>
> dbflute実行用のsql文取得方法について聞きたいです。
> sqlを実行する前にsql文を取得して、データベースに出力したいですが,
>         MemberCB cb = new MemberCB();
>         String beforeSql = cb.toDisplaySql();
> 上記のようにsql実行する前にsql文を取得できますが、以下のメッソドを実行する前にsql文を取得する方法を教えてください。
>         memberBhv.insert(member);
>         memberBhv.update(member);
> なお以下のsqlを実行する前にsql文を取得する方法もわからないです。
> ① mZipBhv.outsideSql().selectList(MZipBhv.PATH_TESTTBL001,
> null,TESTTBL001.class);
> ② TESTTbl006Pmb pmb = new TESTTbl006Pmb();
>    pmb.setZip(zip);
>    mZipBhv.outsideSql().execute(MZipBhv.PATH_TESTTBL002, pmb);
>
>
> dbflute-basic-exampleからsql文を取得する方法がありますが、いずれもsqlを実行する後sql文を取得する方法です。
> ①    String displaySql = TnSqlLogRegistry.peekCompleteSql();
> ②    public void test_SqlLogHandler_basic() {
>         // ## Arrange ##
>         final List<String> displaySqlList = new ArrayList<String>();
>         CallbackContext callbackContext = new CallbackContext();
>         callbackContext.setSqlLogHandler(new SqlLogHandler() {
>             public void handle(String executedSql, String displaySql,
> Object[] args, Class<?>[] argTypes) {
>                 assertNotNull(executedSql);
>                 assertNotNull(displaySql);
>                 displaySqlList.add(displaySql);
>             }
>         });
>         CallbackContext.setCallbackContextOnThread(callbackContext);
>         try {
>             // ## Act ##
>             MemberCB cb = new MemberCB();
>             cb.query().setMemberName_PrefixSearch("AAA");
>             memberBhv.selectCount(cb);
>             cb.query().setMemberName_PrefixSearch("BBB");
>             memberBhv.selectList(cb);
>             cb.query().setMemberName_PrefixSearch("CCC");
>             memberBhv.selectCount(cb);
>             cb.query().setMemberName_PrefixSearch("DDD");
>             memberBhv.selectList(cb);
>             // ## Assert ##
>             log("[Display SQL]");
>             log("- - - - - - - - - - - - - - - - - - ");
>             for (String displaySql : displaySqlList) {
>                 log(displaySql);
>                 log("- - - - - - - - - - - - - - - - - - ");
>             }
>             assertEquals(4, displaySqlList.size());
>             assertNull(SqlLogRegistryLocator.getInstance()); // This doesn't
> use SqlLogRegistry
>         } finally {
>             CallbackContext.clearCallbackContextOnThread();
>         }
>     }
> よろしくお願いいたします。
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>


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