/** čĊ Ġ* Ġ@ author Ġyang fan čĊ Ġ* Ġ@ since Ġ 2 0 1 7 / 1 2 / 1 5 Ġ 1 1 : 4 7 čĊ Ġ*/ č Ċ package Ġcom . pan ther . db oms . utils čĊč Ċ import Ġjava . sql . Connection č Ċ import Ġjava . sql . PreparedStatement č Ċ import Ġjava . sql . ResultSet č Ċ import Ġjava . sql . SQLException čĊč Ċ class ĠDB Executor ( private Ġval Ġconn : ĠConnection ) Ġ{ čĊčĊĠĠĠ Ġfun Ġquery ( sql : ĠString , Ġsetter : ĠPreparedStatement . () Ġ-> ĠUnit ): ĠQuery Result Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġps : ĠPreparedStatement ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġvar Ġrs : ĠResultSet ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps Ġ= Ġconn . prepareStatement ( sql ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps . setter () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs Ġ= Ġps . executeQuery () čĊĠĠĠĠĠĠĠĠĠĠĠ ĠQuery Result ( ps , Ġrs ) čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSQLException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs ?. close () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps ?. close () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġ< R > Ġquery ( sql : ĠString , Ġsetter : ĠPreparedStatement . () Ġ-> ĠUnit , Ġmapper : ĠResultSet . () Ġ-> ĠR ?): ĠR ? Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġps : ĠPreparedStatement ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġvar Ġrs : ĠResultSet ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps Ġ= Ġconn . prepareStatement ( sql ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps . setter () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs Ġ= Ġps . executeQuery () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . mapper () čĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs ?. close () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps ?. close () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġupdate ( sql : ĠString , Ġsetter : ĠPreparedStatement . () Ġ-> ĠUnit ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġps : ĠPreparedStatement ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps Ġ= Ġconn . prepareStatement ( sql ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps . setter () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġps . executeUpdate () čĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps ?. close () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġbatch Update ( sql : ĠString , Ġsetter : ĠPreparedStatement . () Ġ-> ĠUnit ) Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġps : ĠPreparedStatement ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps Ġ= Ġconn . prepareStatement ( sql ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps . setter () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps . execute Batch () čĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps ?. close () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊč Ċ class ĠQuery Result ( private Ġval Ġps : ĠPreparedStatement , Ġprivate Ġval Ġrs : ĠResultSet ) Ġ{ čĊĠĠĠ Ġin fix Ġfun Ġ< R > Ġmapper ( rs Mapper : ĠResultSet . () Ġ-> ĠR ?): ĠR ? Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . rs Mapper () čĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . close () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġps . close () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊ