[Seasar-user:20487] Re: 【DBFlute】外だしSQLについておご教示ください。
kubo
[E-MAIL ADDRESS DELETED]
2011年 1月 7日 (金) 21:32:14 JST
久保(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
>
>
>
>
>
> お手数をおかけいたします。
>
> よろしくお願いいたします
>
>
>
> 櫻井
>
>
>
>
>
> ========================================================
>
> (株)バンキングシステムズ
>
> SS部 :櫻井 周里
>
> e-mail :[E-MAIL ADDRESS DELETED]
>
> tel :03-3851-6631
>
> fax :03-3851-6638
>
> =========================================================
>
>
>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
Seasar-user メーリングリストの案内