Let's read!
ããããããªããã³ã¼ããè¦ã¦ã¿ã¦ãã ããã
public void index() { // what do you select? ... = logic.selectNandemoMember(null, "S", null , false, true, false, CDef.MemberStatus.Formalized , true, false, true, true); }
Action, Controller, Serviceç¸å½ã®ã¯ã©ã¹ãããã®Logicã®ã¡ã½ãããå¼ãã§ããã¨æã£ã¦ãã ããã
ããããã¡ã½ããè¦ããã¨ããã¾ãããï¼èªã¿ãããã§ããï¼
ãã¦ãLogicå´ã¯ãããªã£ã¦ãã¾ãã(çç¥ãã¦ã¾ããã©ããã£ã¨ãã«ããªãã¾ã)
public List<Member> selectNandemoMember(Integer memberId , String memberName , Date birthdateFrom , boolean hasFormalizedDate , boolean existsPurchase , boolean existsLogin , CDef.MemberStatus statusCode , boolean setupSelectService , boolean loadPurchase , boolean loadLogin , boolean exceptMobileLogin) { List<Member> memberList = memberBhv.selectList(cb -> { if (memberId != null) { cb.query().setMemberId_Equal(memberId); } ...(more) if (hasFormalizedDate) { cb.query().setFormalizedDatetime_IsNotNull(); } if (setupSelectService) { cb.setupSelect_MemberServiceAsOne(); } ...(more) }); if (loadPurchase) { memberBhv.loadPurchase(memberList, purCB -> { ...(more) }); } ...(more) return memberList; }
ããªããç®æè ã ã£ãã
ãã¦ãããªãã¯ãã¾æ°ããç»é¢ã®å®è£
ãã¦ãã¾ãã
ãã®ã¡ã½ãããå¼ã³ããã¨æãã¾ããï¼
...
ããå¼ã¼ãã¨æã£ããã
ã¡ãã£ã¨ã ãçµãè¾¼ã¿æ¡ä»¶ãè¶³ãã¾ããã§ããã
ãã¦ãã©ããã¾ããï¼
èªã¿ã¥ãã大ççº
jfluteã¯ä½åº¦ãè¦ããã¨ãããã¾ããããã¯ãã "ã¡ã³ãä¸è½ã®å¼·è " ã§ãã©ããªæ¤ç´¢ããã¦ããã®ãï¼ããã確èªããã®ã«ãã½ã¼ã¹ããã£ã¡ãã£ãããã£ã¡ãã£ããã
ã¾ã ã弿°ãåºå®å¤ã§ããã°ãå®éã«å®è¡ãã¦ãã°ã®SQLãè¦ãã°ã¨ããæãã§ããã弿°ã RequestParameter ã«ãããã®ã§ã弿°ã®æå®ããã£ãããªãã£ããã弿°ãæå®ããå´ã§ãåå²ããã£ããããã¨ãããç¡çã§ãã
ã¡ãªã¿ã«åéããã¦ã¯ãããªãã®ã¯ãå³å¯ã«ã¯å¼æ°ãå¤ãããã¤ããã®ã§ã¯ãªããã弿°ã§ã¡ã½ããã®å¦çãç´°ããæä½ãããã¨ãã¦ãããã¨ããç¹ã§ããããã§å¼æ°ãå¤ãã¨ãªãããã¨ã(åã«ãã¼ã¿ãã¼ã¹ã«ç»é²ããå¤ã¨ãã§ããã°ã弿°ã¯ã©ã¹ã«ã¾ã¨ããããããã®è©±ã§æ¸ã¿ã¾ã)
ãã°ã¬ã®æ¸©åº
Javaã§ã¯å¼æ°åæå®ã®ã¡ã½ããå¼ã³åºããã§ãã¾ããããä»®ã«ã§ããã¨ãã¦ãã50æ©100æ©ã§ãã
èªã¿ã¥ããã ãã§ã¯ãªããããã ã鏿è¢ãããã¨ãããã¨ã¯ãã ãã¶æ¥åã®éãç»é¢å士ã§åå©ç¨ããã¦ãã¾ããLogicå ã§ã¯è¤éãªåå²ããããä¿®æ£ã«ã¯åæ°ãè¦ãã¾ãã
大æµããã®åæ°ã¯ããã¾ããããã追å çãªä¿®æ£ã ããè¡ã£ã¦ããã¨æãã¾ããçæ³çãªä¿®æ£ããã¦ç¶ºéºã«æ´ãã¦ãããªãã¾ã ãããã©ãã©ããããçãªè¿½å ä¿®æ£ã°ããç©ã¿ä¸ãã¦ããã®ã§ã大æµã弿°ãã¶ã¤ã³ãé ·ããã¨ã«ãªããã¡ã§ãã(ããã弿°ãã¶ã¤ã³ã大äºãªãã¿ã¼ã³ã§ããã弿°ãã¶ã¤ã³ã£ã¦é£ãããã®ã§ã)
弿°ã®ãã¼ãã³ã°ãããã®æ½è±¡åº¦ããã¤ã³ãã§ãã弿°ããä½ããã£ã¦ããã®ãæ³åãä»ãããããã©ããï¼ãããçãªç©ã¿éãããã¦ããã¨ããªããªãããããã弿°ã«ã¯ãªããªããã®ã§ãã
ãªã®ã§ãåä»ãã¾ããã
ããããã弿°ã¨ãããªã¢ã³ã³ã§ãé ãã® ConditionBean ã(ä¸å¨ç¨ã«)æä½ããå§¿ããããã...
弿°ãªã¢ã³ã³ãã¿ã¼ã³
ã¨åä»ãã¾ããã
ãããããã¯ãConditionBeanã®è¯ããæã¡æ¶ããç¬èªã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã§æ¤ç´¢ãæä¾ããã"ç¬èªã®O/Rãããã¼" ã¨è¨ããã§ãããã
ãã£ãã誰ãä½ãã®ï¼
å¤ãã®å ´åãç¹å®ã®èª°ãä¸äººãä½ãããã§ã¯ããã¾ããããã¶ããæåã«ä½ã£ã人ãã弿°ãªã¢ã³ã³ãã¿ã¼ã³ã好ããªããã§ã¯ãªãã§ãããã
æããæåã¯å¼æ°ã¯ä¸ã¤ãããã§ãã¾ããã®ç¨åº¦ãªã...ã¨æã£ã¦ãµã¯ãã¨ãã£ãããããªã
jfluteããã¡ãã£ã¨å¼æ°ã«boolean渡ãã¦åå²ã¨ããå¥ã«ãããªãããªãã§ãããã ãã§ããã ãå é¨çãªãã®ã«éå®ããããçµ¶å¯¾ã«æ°ãå¢ããªãç¶æ³ã§ãããã¨ã確èªããããã§ããã ãéãæ¹æ³ã§ã®è¡¨ç¾ã模索ããããç¹ã«ãã®ãã¿ã¼ã³ãåä»ãã¦ããã¯æ°ãã¤ãã¦ã¾ãç¬ã
ãããæåã¯ãããªã«å¼æ°ã¯å¤ããªãããããããã ã£ããã¾ãå¥ã«ãããªã¤ããããªããã§ãã大æµãã¼ã éçºã§ããããå¥ã®äººããã®ã¡ã½ãããåå©ç¨ããã¨ãã¾ããã§ããã»ã¼ä½¿ããããªãã ãã©ãã¡ããã£ã¨ã ãéãã
ãã®ã¨ããå¥ã«åå©ç¨ããã«èªåã§0ããå®è£ ãã¦ãããã®ã«ãåå©ç¨ç®çæèã®å¼·ãLogicã¯ã©ã¹ã«ãããããã®ãããã¨...
ããªãããããã使ããªãããããªãã®ããª...ã
ã£ã¦æãå§ãã¾ãã
確ãã«èªåã®è¦ä»¶ã¨ä¼¼ã¦ãããã使ãããªããã®æ¹ã楽ã ãã
ã¨ãããã¨ã§ãã¡ããã£ã¨èªåç¨ã®å¼æ°ã追å ãã¦ãèªåã®è¦ä»¶ãæºããã¾ããããã¦...
while (true) {
ã¾ãå¥ã®äººã...
}
ã¨ããããå ã ã®ä½ã£ã人ããç»é¢ã®è¦ä»¶ãå¤ãã£ã¦ãã¾ã追å ä¿®æ£ããã...ããããããªãã弿°éåå¢ãã¦ããªããä¿®æ£ãã¥ãããªã...ã
誰ãããã ã巨大ãªå¼æ°ãªã¢ã³ã³ãã¿ã¼ã³ãä½ããã¨ã¯æã£ã¦ããªãã£ãã®ã«ãè¦äºã«ã§ãããã£ã¦ãã¾ãã¾ãããã¤ã³ã¯ãªã¡ã³ã¿ã«ãªéçºãããäºæ¥ä¼ç¤¾ã®æ¹ãçºçããããããã§ããã
ããã弿°ãªã¢ã³ã³ãã¿ã¼ã³ã¯ã©ãã©ãè²ã¦ããã¦ããã®ã§ããããããã¨æã£ãã¨ãã«ã¯æãã§ã«é ãã
ãæ¬å½ã«ããããæ¤ç´¢ã§ããã®ãï¼ã
ãã確èªãããã¨èªä½ã大å¤ãªã®ã§ãä¸åä¸åãå¼ã³åºãå´ã®è¦ä»¶ãç´è§£ãã¦ãã£ã¦ã®ä¿®æ£ãé常ã«ã³ã¹ãããããã¾ãã
ã«ã¼ãºãªåå©ç¨ãªãããªãæ¹ããã
ãã°ãããã§ãã
ã¸ããªåå©ç¨ãªãããªãæ¹ããã·ã
jfluteã¯ã"æ¤ç´¢ã¾ããã¨ã®åå©ç¨" ã£ã¦ãã§ãããã¨ã¯ãã¾ããªãã ããã¨æã£ã¦ãã¾ããå°ãªãã¨ã BtoC ãªã©ãµã¼ãã¹ç³»ã ã¨ã
åããã¼ãã«ã®æ¤ç´¢ã«ããã£ã¦ãçµå±ã¯ç»é¢ã«ãã£ã¦ããã¼ã¿åå¾ããããã®ãå¤ãã£ããã並ã³é ãå¤ãã£ãããããã®ã§ãã
ConditionBeançã«è¨ãã¨ãSetupSelect ã LoadReferrer, OrderBy ã¯ãç»é¢ã«ãã£ã¦å¾®å¦ã«å¤ãã£ã¦ããã¨ã
Aç»é¢ã§ã¯é¢é£ãã¼ãã«ã®ãã¼ã¿ã20åå¿ è¦ãBç»é¢ã§ã¯é¢é£ãã¼ãã«ã®ãã¼ã¿ã3åã ãå¿ è¦ããã以å¤ã¯ã ãããæ¤ç´¢æ¡ä»¶ã¯ä¸ç·ãããããBç»é¢ã§ãAç»é¢ç¨ã®æ¤ç´¢ã¡ã½ãããå¼ãã§...Bç»é¢ãéãã¨17åã®ç¡é§ãªé¢é£ãã¼ãã«ã®ãã¼ã¿ã...
ã¨ãããæå°å ¬åæ°ãã¿ã¼ã³ãé ·ãã§ããããããé¿ããããã«ã弿°ã« boolean ãã©ãã©ã追å ãã¦ãã£ã¦ã弿°ãªã¢ã³ã³ãã¿ã¼ã³åãã¦ããã®ãã¤ããã§ãã
ããã¾ã§ç¡çãã¦åå©ç¨ããªãã¦ããã®ã§ã¯ï¼
ã¨ããããå³å¯ãªåå©ç¨ã«ããªã£ã¦ããªãã®ã§ã¯ãªããï¼ã¨ãèãããã¾ãã
åå©ç¨ã¯ã"ä½ãå¤ãã£ãã¨ãã«ä¸ç®æç´ãã°OK" ã£ã¦ããã®å¬ããããã®ã±ã¼ã¹ã ã¨ãå¼ã³åºãå´ã®ãã®ã¡ã½ããã«å¯¾ãã "æ¥åçãªæå³" ãããããçµ±ä¸ããã¦ããã¨ã¯éããªãã®ã§ãä½ãæ¡ä»¶ãå¤ãã¦ããããªãOKã¨ã¯ãªããªããããªãã§ãããã(ããã確èªããªãã£ãã¨ããã°è¦äºãªãã°ã¬ã§ã)
åå©ç¨ã¯ã"å®è£ ããã¨ããæ¥½" ã£ã¦ããã®ãå¬ããããã¯ãèªã¿ã¥ããæåãå³å¯ã«ç¢ºèªããªãã¨ä½¿ããªãã¡ã½ãããåå©ç¨ããæ¹ãå®è£ ã³ã¹ããããã£ã¦ãã¾ããããConditionBeanã使ã£ã¦ãããªããªãããããµãµãã¨æ¸ãã¦ãã¾ã£ãæ¹ãéãã§ãããã
ããã¯ããä½ãåå©ç¨ãã¦ããã®ãï¼ãããããããªãã¦ããªããã¨ãåå ã§ããåå©ç¨ãã¦ãããã®ã¯ç¢ºãã«ããã ãããã©ãããããã¤ãº (åå²ã´ã) ã«ç´ãã¦ãã¦ãã¯ã£ããããªãããåå©ç¨ã®æ©æµãåããããªããã¸ããªåå©ç¨ã®å ¸åã ã¨èãã¾ãã
...
åå©ç¨ãã¾ãã£ã¦ãã¡ã³ãããã®æããããããã©ã¼ãã³ã¹ãã¥ã¼ãã³ã°ãã§ããªã
ã¨ãããããªã®ææªã§ããã
ãã£ã¨ãåå©ç¨ããããã®ã¯ä»ã«ãããã¯ããåå©ç¨ä½åã«ã¯éçãããã¾ããããç¯ç´ãã¦ãæ¬å½ã«åå©ç¨ããããã®ã«ä½¿ã£ã¦æ¬²ããã
whereå¥ã®é¨ååå©ç¨
ã§ããæ¤ç´¢ã®ä¸ã§åå©ç¨ããããã®ãããã¾ããããã¯çµãè¾¼ã¿æ¡ä»¶ã®ä¸é¨åã§ããã¤ã¾ããwhereå¥ã
ä¾ãã°ã"ç¹å¥éããåªå¾ ä¼å¡" ã¨ããæ¥åæ¦å¿µããã£ãã¨ãã¦ãããã表ç¾ããçµãè¾¼ã¿æ¡ä»¶ã以ä¸ã®ãããªãã®ã ã¨ãã¾ãã
cb.query().setMemberName_LikeSearch("S", op -> op.likePrefix());
cb.query().setMemberStatusCode_Equal_Formalized();
cb.query().existsPurchase(purchaseCB -> {
purchaseCB.query().setProductId_Equal(SPECIAL_PRODUCT_ID);
});
æ§ã ãªç»é¢ã®æ¤ç´¢ã§ããã®ä¸ã¤ã®æ¡ä»¶ããã¿ãã¿æ¸ãã¨ãåã«æ¸ãã®ãé¢åã ãééãã人ãããã£ã¦è©±ã«å ãããã®æ¥åæ¦å¿µã®æ¡ä»¶ãå¤ãã£ãã¨ãã«çª®å°ã«é¥ãã¾ãã
"ç¹å¥éããåªå¾ ä¼å¡" ã¨ããçµãè¾¼ã¿æ¡ä»¶ã®å ·ä½çãªå®ç¾æ¹æ³ã¯ãä¸ç®æã«ããããã®ã§ãã(ãµã¼ãã¹ç³»ã®ã¤ã³ã¯ãªã¡ã³ã¿ã«éçºãªããªããã)
ãããªãã°ãããã ããåå©ç¨ãããããªé¨åã¡ã½ãããä½ã£ã¦ã¿ããªã§å ±æããããã«ãããã¨ããã§ãã
ä¾ãã°ãDBFluteã®èªåçæã¯ã©ã¹ã¯ãã¸ã§ãã¬ã¼ã·ã§ã³ã®ã£ãããã¿ã¼ã³ã§çæããã¦ãã¾ãã®ã§ãExã¯ã©ã¹ (ä¸åº¦èªåçæãããã䏿¸ããããªãã¯ã©ã¹) ã®æ¹ã«ãç¬èªã« "ç¹å¥éããåªå¾ ä¼å¡" ã表ç¾ããã¡ã½ãããå®ç¾©ã
public class MemberCQ extends BsMemberCQ { ... /** * ç¹å¥éããåªå¾ ä¼å¡ */ public void arrangeServiceMember() { setMemberName_LikeSearch("S", op -> op.likePrefix()); setMemberStatusCode_Equal_Formalized(); existsPurchaseList(purCB -> { purCB.query().setProductId_Equal(SPECIAL_PRODUCT_ID); }); } }
ããããããããã®æ¤ç´¢ã§åå©ç¨ãã¾ããSetupSelect ããããã®ãéã£ãããOrderBy ããããã®ãéã£ã¦ããããä»ã®çµãè¾¼ã¿æ¡ä»¶ããã£ãããã¦ãé¢ä¿ããã¾ããã
memberBhv.selectList(cb -> { cb.setupSelect_... cb.query().arrangeServiceMember(); // *here cb.query().set... cb.query().addOrderBy_... }
åºç¹ãã¼ãã«ãå¤ãã£ã¦ãæ§ãã¾ããã
purchaseBhv.selectList(cb -> { cb.setupSelect_... cb.query().queryMember().arrangeServiceMember(); // *here cb.query().set... cb.query().addOrderBy_... }
é¨ååå©ç¨ã®ç©ã¿éã
å°ãªãã¨ã DBFlute ã§ã¯ãæ¤ç´¢ã¾ããã¨ã®åå©ç¨ããããé¨ååå©ç¨ã®æ¹ããªã¹ã¹ã¡ãã¦ãã¾ãã
æ¤ç´¢ã¾ããã¨ã®åå©ç¨ããããªãã°ã弿°ãªã¢ã³ã³ãã¿ã¼ã³ã«ãªããªãããã«ããã¾ãè¨è¨ããå¿ è¦ãããã§ãããããã®ããã«ã¯ãå°éã®ããã¸ã¡ã³ããå¿ è¦ã§ãããããããªãã«è²»ç¨ãããããã®ã ã¨æãã¾ãã
ãªã®ã§...
æ¤ç´¢ã¾ããã¨ã®åå©ç¨ãã§ãããã¿ã¼ã³ã¯ããªãã¯ãªãããã©ããä¸ã¤ã®ã·ã¹ãã ã«ããã¦ããããªã«æ°ã¯å¤ããªãã¨æ³å®ãã¦ããã®ã§ããã®ãããã®åå©ç¨ã¯ç®ãã¤ã¶ã£ã¦ãããããªã¨ã
ããããããé¨ååä½ã§å°ããåå©ç¨ãç©ã¿ä¸ããæ¹ããåå©ç¨ã®éã¯æ¸ãããããã¾ããããå®éã®ç¾å ´ã«ã¯ãã£ããããã¨èãã¦ãã¾ããã¾ããDBFlute (ConditionBean) ã¯ãããããããããã®ãç¹å¾´ã ã¨æã£ã¦ãã¾ãã
DBFluteã®ãªãã£ã·ã£ã«ãµã¤ãã«ãããã®è©±ãæ¸ããã¦ãã¾ãã
ã=> whereå¥ã®åå©ç¨ | DBFlute
ã«ã¼ãºãªDaoãã¿ã¼ã³ã ã¨çºçãããã!?
ããã¯ãã¾ãå¥éããã°æ¸ãã¾ããã
ã=> ã追è¨ãã«ã¼ãºãªDaoãã¿ã¼ã³ãªãè¦ãããªã
ãã®å¼æ°ãªã¢ã³ã³ãã¿ã¼ã³ãçºçããç¾å ´ã§ã¯ãã»ã¨ãã©ã«ããã¦Daoãã¿ã¼ã³ããããã¯ãããã«çããã¬ã¤ã¤ã§æ¤ç´¢ããã¦ãããã¿ã¼ã³ã§ã¢ã¼ããã¯ãã£ãã¶ã¤ã³ããã¦ãã¾ããã
åå©ç¨ãããæ³å®ã§ä½ã£ã¦ãªãæ¤ç´¢ã¡ã½ããããåå©ç¨ãæèããã¬ã¤ã¤ã«å®ç¾©ãã¦ããã®ã§ãä»ã®äººãã©ãã©ãè²ã¦ã¦ãã£ã¦ãã¾ã...