package Ġsql builder Ċ Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġjava . io . File Ċ import Ġjava . io . OutputStream Ċ import Ġjava . io . Writer Ċ Ċ /** Ċ Ġ* ĠSelect Ġstatement : Ġselect Ġbean / beans , Ġsingle Ġfields Ġor ĠMaps . Ċ Ġ* Ċ Ġ* Ġ@ author ĠLa urent ĠVan Ġder ĠL inden Ċ Ġ*/ Ċ interface ĠSelect Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġif Ġyour Ġbean Ġdoes Ġnot Ġhave Ġa Ġstatic Ġentity Ġreference Ġlike < br /> ĊĠĠĠĠ Ġ* Ġ< code > final Ġstatic ĠString ĠTABLE Ġ= Ġ" schema . table "; </ code >< br /> ĊĠĠĠĠ Ġ* Ġ, Ġspecify Ġthe Ġschema . table Ġhere ĊĠĠĠĠ Ġ* Ġ@ param Ġentity ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfrom ( entity : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġsimple Ġwhere Ġclause ĊĠĠĠĠ Ġ* Ġ@ param Ġwhere ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwhere ( where : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġsimple Ġwhere Ġclause ĊĠĠĠĠ Ġ* Ġ@ param Ġwhere ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwhere ( where : ĠString , Ġvar arg Ġparameters : ĠAny ?): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStart Ġbuilding Ġa Ġcomplex Ġwhere Ġclause Ġ( nested Ġgroups , Ġconditional Ġclauses ). ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġroot Ġwhere Ġgroup ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwhere (): ĠWhere Group ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCustom Ġsuffix : Ġeg . Ġorder / group Ġby ĊĠĠĠĠ Ġ* Ġ@ param Ġsuffix ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsuffix ( suffix : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOrder Ġby Ġ 1 Ġcolumn . ĠThis Ġwill Ġreplace Ġany Ġexisting Ġsuffix . ĊĠĠĠĠ Ġ* Ġ@ param Ġcolumn ĊĠĠĠĠ Ġ* Ġ@ param Ġascending ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠorderBy ( column : ĠString ?, Ġascending : ĠBoolean ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor Ġpartial Ġlists : Ġrow Ġ 2 0 Ġ-> Ġ 4 0 ĊĠĠĠĠ Ġ* Ġ@ param Ġoffset ĊĠĠĠĠ Ġ* Ġ@ param Ġrows ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġoffset ( offset : ĠInt , Ġrows : ĠInt ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChange Ġthe Ġdefault Ġfetch Ġsize . ĊĠĠĠĠ Ġ* ĠM ysql Ġby Ġdefault Ġf etches Ġeverything Ġunless Ġfetch size Ġ= ĠInteger . MIN _ VALUE . ĊĠĠĠĠ Ġ* Ġ@ param Ġfetch Size ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfetch Size ( fetch Size : ĠInt ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCache Ġthe Ġresults Ġin Ġthe Ġglobal Ġcache . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcache (): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCache Ġthe Ġresults Ġin Ġa Ġspecific Ġcache . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcache ( cache Id : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCache Ġthe Ġresult Ġin Ġa ĠFile Ġusing Ġserial isation . ĊĠĠĠĠ Ġ* Ġ@ param Ġfile ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcache ( file : ĠFile ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġdata Ġusing Ġa Ġcustom Ġcaching Ġstrategy . ĊĠĠĠĠ Ġ* Ġ@ param Ġcache Strategy ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcache ( cache Strategy : ĠCache Strategy ): ĠSelect ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect Bean ( bean Class : ĠClass < T >): ĠT ? ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect Beans ( bean Class : ĠClass < T >): ĠList < T > ĊĊĠĠĠ Ġfun Ġexclude Fields ( var arg Ġexclude s : ĠString ): ĠSelect ĊĊĠĠĠ Ġfun Ġinclude Fields ( var arg Ġincludes : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġfirst / only Ġoccurrence Ġof Ġa Ġsingle Ġfield Ġand Ġreturn Ġnull Ġif Ġno Ġresult . ĊĠĠĠĠ Ġ* Ġ@ return Ġresult Ġor Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect Field ( required Type : ĠClass < T >): ĠT ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġfirst / only Ġoccurrence Ġof Ġa Ġsingle Ġfield Ġand Ġreturn Ġnull Ġif Ġno Ġresult . ĊĠĠĠĠ Ġ* Ġ@ return Ġresult Ġor Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect Field ( sole Field : ĠString ?, Ġrequired Type : ĠClass < T >): ĠT ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġfirst / only Ġoccurrence Ġof Ġa Ġsingle Ġfield Ġand Ġreturn Ġdefault Ġvalue Ġif Ġno Ġresult . ĊĠĠĠĠ Ġ* Ġ@ return Ġresult Ġor ĠdefaultValue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect Field ( sole Field : ĠString ?, Ġrequired Type : ĠClass < T >, ĠdefaultValue : ĠT ): ĠT ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġall Ġoccurrences Ġof Ġa Ġsingle Ġfield . ĊĠĠĠĠ Ġ* Ġ@ param Ġrequired Type ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect All Field ( required Type : ĠClass < T >): ĠList < T > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġall Ġoccurrences Ġof Ġa Ġsingle Ġfield . ĊĠĠĠĠ Ġ* Ġ@ param Ġsole Field ĊĠĠĠĠ Ġ* Ġ@ param Ġrequired Type ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect All Field ( sole Field : ĠString ?, Ġrequired Type : ĠClass < T >): ĠList < T > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġthe Ġresult Ġas Ġa Ġsingle ĠMap . ĊĠĠĠĠ Ġ* Ġ< br /> Use Ġeither Ġthe Ġcolumn Ġname Ġor Ġindex ( from Ġ 0 ) Ġas Ġkey . ĊĠĠĠĠ Ġ* Ġ@ param Ġfields Ġselected Ġfields ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect Map ( var arg Ġfields : ĠString ): ĠRow Map ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġthe Ġresult Ġas Ġa ĠList Ġof ĠRow Maps . ĊĠĠĠĠ Ġ* Ġ< br /> Use Ġthis Ġparameter ized Ġversion Ġin Ġcombination Ġwith Ġa Ġfrom Ġand Ġwhere . ĊĠĠĠĠ Ġ* Ġ@ param Ġfields Ġselected Ġfields ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect Maps ( var arg Ġfields : ĠString ): ĠList < Row Map > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġa Ġsingle Ġfield Ġ( 1 / first Ġrow ) Ġand Ġpump Ġthe Ġresult Ġinto Ġthe ĠOutputStream . ĊĠĠĠĠ Ġ* Ġ@ param Ġfield ĊĠĠĠĠ Ġ* Ġ@ param Ġos ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect Field To Stream ( field : ĠString , Ġos : ĠOutputStream ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelect Ġa Ġsingle ĠC LOB Ġfield Ġand Ġstream Ġit Ġto Ġa ĠWriter . ĊĠĠĠĠ Ġ* Ġ@ param Ġfield ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect Field To Stream ( field : ĠString , Ġwriter : ĠWriter ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRun Ġselect Ġstatement Ġwith Ġcustom ĠReturn ing Row Handler Ġreturning Ġresults Ġof Ġtype ĠR Ġwhich Ġcannot Ġbe Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect ( row Handler : ĠReturn ing Row Handler < T >): ĠT ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRun Ġselect Ġstatement Ġwith Ġcustom ĠReturn ing Row Handler Ġreturning Ġresults Ġof Ġtype ĠR Ġwhich Ġcan Ġbe Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġselect ( row Handler : ĠOptional Return ing Row Handler < T >): ĠT ? ĊĊĠĠĠ Ġfun Ġsql (@ Language (" SQL ") Ġsql : ĠString , Ġvar arg Ġparameters : ĠAny ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMap Ġa ĠSQL Ġexpression Ġto Ġa ĠBean ĠProperty : Ġeg . Ġsum ( amount ) Ġ-> Ġtotal Amount . ĊĠĠĠĠ Ġ* Ġ@ param Ġsql Column Ġcolumn Ġindex Ġin Ġresult Ġ( starting Ġfrom Ġ 0 ) ĊĠĠĠĠ Ġ* Ġ@ param ĠpropertyName Ġa ĠBean ĠProperty Ġname Ġ( without Ġsetter / getter Ġprefix ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent ĠSelect Ġstatement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap ( sql Column Index : ĠInt , ĠpropertyName : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMap Ġa ĠSQL Ġexpression Ġto Ġa ĠBean ĠProperty : Ġeg . Ġsum ( amount ) Ġ-> Ġtotal Amount . ĊĠĠĠĠ Ġ* Ġ@ param Ġsql Column Ġcolumn Ġname Ġ( alias Ġif Ġapplied ) ĊĠĠĠĠ Ġ* Ġ@ param ĠpropertyName Ġa ĠBean ĠProperty Ġname Ġ( without Ġsetter / getter Ġprefix ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent ĠSelect Ġstatement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmap ( sql Column : ĠString , ĠpropertyName : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġvendor - specific Ġcommand Ġto Ġthe Ġstatement Ġat Ġ" select Ġ< i > option </ i > Ġ..." ĊĠĠĠĠ Ġ* Ġ@ param Ġoption Ġeg . Ġ" SQL _ CAL C _ FOUND _ ROWS " ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent ĠSelect Ġstatement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġselect Option ( option : ĠString ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOverride Ġthe Ġcursor Ġdirection Ġor Ġconcurrency Ġto Ġallow Ġeg . Ġup datable Ġresult sets ĊĠĠĠĠ Ġ* Ġ@ param Ġcursor Type Ġone Ġof ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ Ġ< code > ResultSet . TYPE _ FORWARD _ ONLY </ code >, ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ Ġ< code > ResultSet . TYPE _ SCROLL _ INS ENS ITIVE </ code >, Ġor ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ Ġ< code > ResultSet . TYPE _ SCROLL _ S ENS ITIVE </ code > ĊĠĠĠĠ Ġ* Ġ@ param Ġconcurrency Ġone Ġof ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ Ġ< code > ResultSet . CON CUR _ READ _ ONLY </ code > Ġor ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠ Ġ< code > ResultSet . CON CUR _ UP DAT ABLE </ code > ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent ĠSelect Ġstatement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠresultSet Type ( cursor Type : ĠInt , Ġconcurrency : ĠInt ): ĠSelect ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpec ifi y Ġgroup Ġby Ġstatement , Ġeg . Ġ< code > select . groupBy (" group Ġby Ġa ard vz ") </ code > ĊĠĠĠĠ Ġ* Ġ< br /> Insert Ġafter Ġwhere Ġclause Ġand Ġbefore ĠorderBy / suffix ĊĠĠĠĠ Ġ* Ġ@ param Ġgroup By Ġcomplete Ġgroup Ġstatement Ġ( including Ġgroup Ġby Ġkeyword ) ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent ĠSelect Ġstatement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgroup By ( groupBy : ĠString ): ĠSelect Ċ } Ċ