[Seasar-user:20500] Re: 【DBFlute】外だしSQLについておご教示ください。

櫻井 周里 [E-MAIL ADDRESS DELETED]
2011年 1月 11日 (火) 10:44:33 JST


櫻井と申します。

いつも大変お世話になっております。
ご返信ありがとうございます。

説明が足りないにもかからわず、ありがとうございます。
要件はまさにその久保さんのイメージされている通りです。

久保さんのCBで作成していただいている内容を外だしSQLファイルに
書きたいのですが。。。。。

いつもいつも申し訳ないです。
ご教示いただけますようよろしくお願いいたします。

櫻井
-----Original Message-----
From: [E-MAIL ADDRESS DELETED] [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of kubo
Sent: Friday, January 07, 2011 9:32 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20487] Re:【DBFlute】外だしSQLについておご教示ください。

久保(jflute)です。

櫻井さん、こんばんは

外だしSQLでの条件作成にお悩みとのことですが、
もう少し悩みの具体的な内容を教えて頂けると助かります。
「1まで組み合わせるとできないでかなり困っています」
の部分の詳細がもっと説明されていればと。
(その方がML閲覧者もコメントしやすいかと思います)

ちなみに、この要件を ConditionBean で実装するとなると以下の
ようなイメージになると思いますが合っていますでしょうか?
(実際にはメールに載っていない他の複雑な条件などがあって、
CBではなく外だしSQLを選択しているという前提だと思われますが)

Usr110tblCB cb = new Usr110tblCB();
cb.setupSelect_Usr040tbl();
List<Integer> userKbnList;
if (rdoMember == 在籍者) {
    userKbnList = Arrays.asList(1);
} else if (rdoMember == 退職者) {
    userKbnList = Arrays.asList(2);
} else if (rdoMember == 全部) {
    userKbnList = Arrays.asList(1, 2, 3);
} else {
    // exception?
}
cb.query().queryUsr040tbl().setUserKbn_InScope(userKbnList)
cb.query().arrangeKana_PrefixSearch(txtSelect);

---

<Usr110tblCQ>
public void arrangeKana_PrefixSearch(String targetLine) {
    if (targetLine == "あ") {
        arrangeKana_PrefixSearch_Aiueo();
    } else if (targetLine == "か") {
        arrangeKana_PrefixSearch_Kakikukeko();
    } else if (targetLine == "さ") {
    ...(それぞれ「わ」まで)
    }
}

protected void arrangeKana_PrefixSearch_Aiueo() {
    doArrangeKana_PrefixSearch("ア", "イ", "ウ", "エ", "オ");
}

protected void arrangeKana_PrefixSearch_Kakikukeko() {
    doArrangeKana_PrefixSearch("カ", "キ", "ク", "ケ", "コ");
}
...(それぞれ「わ」まで)

protected void doArrangeKana_PrefixSearch(String... prefixes) {
    StringBuilder sb = new StringBuilder();
    for (String prefix : prefixes) {
        sb.append(prefix).append(" ");
    }
    LikeSearchOption option = new LikeSearchOption();
    option.likePrefix().splitByBlank().asOrSplit();
    setUserShimeiKana_LikeSearch(sb.toString().trim(), option);
}

2011/1/7 櫻井 周里 <[E-MAIL ADDRESS DELETED]>:
> お世話になっております。
>
> いつも参考にさせていただいてます。
>
>
>
> 開発でDBFluteを使っていますが、外だしSQLのところで悩んでいます。
>
> お手数ですが、ぜひご教示くださいますようよろしくお願いいたします。
>
>
>
> ラジオボタンの値が在籍者の場合(pmb.rdoMember =’ 在籍者’)
>
> 1:USR040TBL.USER_KBNが「1」のものを抽出
>
> 2:選択行が「あ」行の場合(pmb.txtSelect = ‘あ’)、USR110TBL.USER_SHIMEI_KANJI ‘あ%’ or ‘い%’
> を抽出
>
>   (選択行はあ~わまで)
>
> 3:USR040TBL.USER_ID = USR110TBL.USER_ID
>
> ラジオボタンの値が退職者の場合(pmb.rdoMember =’ 退職者’)
>
> 1:USR040TBL.USER_KBNが「2」のものを抽出
>
> 2:選択行が「あ」行の場合(pmb.txtSelect = ‘あ’)、USR110TBL.USER_SHIMEI_KANJI ‘あ%’ or ‘い%’
> を抽出
>
> (選択行はあ~わまで)
>
> 3:USR040TBL.USER_ID = USR110TBL.USER_ID
>
> ラジオボタンの値が全部の場合(pmb.rdoMember =’ 全部’)
>
> 1:USR040TBL.USER_KBNが「1」、「2」、「3」のものを抽出
>
> 2:選択行が「あ」行の場合(pmb.txtSelect = ‘あ’)、USR110TBL.USER_SHIMEI_KANJI LIKE ‘あ%’ or
> ‘い%’ を抽出
>
> (選択行はあ~わまで)
>
> 3:USR040TBL.USER_ID = USR110TBL.USER_ID
>
>
>
> という条件を外だしSQLで書きたいのですが。。。。。。
>
> 2,3の組み合わせはできたのですが、1まで組み合わせるとできないでかなり困っています。
>
> 大変申し訳ございませんが、ご教示よろしくお願いいたします。
>
>
>
> 現在できているソースを以下に記載させていただきます。
>
> -- #UserSelectMemberListCme#
>
> -- *USER_ID*
>
> -- *USER_KBN*
>
> -- *USER_SHIMEI_KANJI*
>
>
>
>
>
> -- !UserSelectMemberListPmb!
>
> -- !!String txtSelect!!
>
> -- !!String rdoMember!!
>
>
>
>
>
> SELECT
>
>         USR110TBL.USER_ID           USER_ID
>
>        ,USR040TBL.USER_KBN          USER_KBN
>
>        ,USR110TBL.USER_SHIMEI_KANJI USER_SHIMEI_KANJI
>
> FROM
>
>        USR110TBL,
>
>        USR040TBL
>
> WHERE
>
> /*BEGIN*/
>
>        /*IF pmb.txtSelect == 'あ'*/
>
>        and (USER_SHIMEI_KANA LIKE 'ア%' or USER_SHIMEI_KANA LIKE 'イ%' or
> USER_SHIMEI_KANA LIKE 'ウ%' or USER_SHIMEI_KANA LIKE 'エ%' or USER_SHIMEI_KANA
> LIKE 'オ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'か'*/
>
>        or (USER_SHIMEI_KANA LIKE 'カ%' or USER_SHIMEI_KANA LIKE 'キ%' or
> USER_SHIMEI_KANA LIKE 'ク%' or USER_SHIMEI_KANA LIKE 'ケ%' or USER_SHIMEI_KANA
> LIKE 'コ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'さ'*/
>
>        or (USER_SHIMEI_KANA LIKE 'サ%' or USER_SHIMEI_KANA LIKE 'シ%' or
> USER_SHIMEI_KANA LIKE 'ス%' or USER_SHIMEI_KANA LIKE 'セ%' or USER_SHIMEI_KANA
> LIKE 'ソ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'た'*/
>
>        or (USER_SHIMEI_KANA LIKE 'タ%' or USER_SHIMEI_KANA LIKE 'チ%' or
> USER_SHIMEI_KANA LIKE 'ツ%' or USER_SHIMEI_KANA LIKE 'テ%' or USER_SHIMEI_KANA
> LIKE 'ト%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'な'*/
>
>        or (USER_SHIMEI_KANA LIKE 'ナ%' or USER_SHIMEI_KANA LIKE 'ニ%' or
> USER_SHIMEI_KANA LIKE 'ヌ%' or USER_SHIMEI_KANA LIKE 'ネ%' or USER_SHIMEI_KANA
> LIKE 'ノ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'は'*/
>
>        or (USER_SHIMEI_KANA LIKE 'ハ%' or USER_SHIMEI_KANA LIKE 'ヒ%' or
> USER_SHIMEI_KANA LIKE 'フ%' or USER_SHIMEI_KANA LIKE 'ヘ%' or USER_SHIMEI_KANA
> LIKE 'ホ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'ま'*/
>
>        or (USER_SHIMEI_KANA LIKE 'マ%' or USER_SHIMEI_KANA LIKE 'ミ%' or
> USER_SHIMEI_KANA LIKE 'ム%' or USER_SHIMEI_KANA LIKE 'メ%' or USER_SHIMEI_KANA
> LIKE 'モ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'や'*/
>
>        or (USER_SHIMEI_KANA LIKE 'ヤ%' or USER_SHIMEI_KANA LIKE 'ユ%' or
> USER_SHIMEI_KANA LIKE 'ヨ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'ら'*/
>
>        or (USER_SHIMEI_KANA LIKE 'ラ%' or USER_SHIMEI_KANA LIKE 'リ%' or
> USER_SHIMEI_KANA LIKE 'ル%' or USER_SHIMEI_KANA LIKE 'レ%' or USER_SHIMEI_KANA
> LIKE 'ロ%')
>
>        /*END*/
>
>        /*IF pmb.txtSelect == 'わ'*/
>
>        or (USER_SHIMEI_KANA LIKE 'ワ%')
>
>        /*END*/
>
> /*END*/
>
>        and USR110TBL.USER_ID    = USR040TBL.USER_ID
>
>
>
>
>
> お手数をおかけいたします。
>
> よろしくお願いいたします
>
>
>
> 櫻井
>
>
>
>
>
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user


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