package Ġio . piv otal Ċ Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . data . repository . Crud Repository Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . jdbc . core . ResultSet Extractor Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . util .* ĊĊ Ċ @ Component Ċ class ĠBlob ber File Repository ( val Ġjdbc Template Ġ: ĠJdbc Template , Ġ@ Value ("\ ${ tableName : files }") Ġval ĠtableName Ġ: ĠString ) Ġ{ ĊĠĠĠ Ġfun Ġput ( file : ĠByteArray , ĠcontentType : ĠString ) Ġ: ĠString ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġid Ġ= ĠUUID . randomUUID (). toString (); ĊĊĠĠĠĠĠĠĠ Ġjdbc Template . update (" INSERT ĠINTO Ġ$ tableName Ġ( id , Ġcontent _ bytes , Ġcontent _ type ) ĠVALUES Ġ( ?, Ġ?, Ġ? )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , Ġfile , ĠcontentType ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġid ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ Ġget ( id : ĠString ) Ġ: ĠBlob ber File ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġblob ber File Ġ= Ġjdbc Template . query (" SELECT Ġid , Ġcontent _ bytes , Ġcontent _ type ĠFROM Ġ$ tableName ĠWHERE Ġid Ġ= Ġ?", ĠresultSet Extractor , Ġid ) ĊĠĠĠĠĠĠĠ Ġreturn Ġblob ber File ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠresultSet Extractor Ġ= ĠResultSet Extractor Ġ{ Ġrs Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( rs . next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBlob ber File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġrs . getString ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Bytes Ġ= Ġrs . getBytes ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ= Ġrs . getString ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }