- Store a Java object list in the BLOB type of Oracle
Write method in DAO implementation:
Public void saveDsPPPs (Long dataFileId, ArrayList <PPP> list) {<br/> try {<br/> ByteArrayOutputStream bo = new ByteArrayOutputStream (); <br/> ObjectOutputStream oo = new ObjectOutputStream (bo); <br/> oo. writeObject (list); <br/> byte [] bytes = bo. toByteArray (); </p> <p> HashMap map = new HashMap (); <br/> map. put ("dataFileId", dataFileId); <br/> map. put ("pppList", bytes); <br/> pppId = (Long) getSqlMapClientTemplate (). insert ("addPPPs", map); <br/> catch (IOException e) {<br/>}< br/>}
Note:
PPP objects must implement the Serializable interface. Only objects that can be serialized can be converted into byte arrays. Otherwise, errors may occur.
Statement in sqlMap:
<Insert id = "addPPPs" parameterClass = "java. util. HashMap"> <br/> <! -- [CDATA [<br/> insert into ppp (data_file_id, ppp_list) <br/> values (dataFileId #, # pppList #) <br/>] --> <br/> </insert>
- Return BLOB data to Java object list
Write method in DAO implementation:
Public ArrayList <PPP> getPPPs (Long dataFileId) {<br/> try {<br/> HashMap map = (HashMap) getSqlMapClientTemplate (). queryForObject ("getPPPs", dataFileId); <br/> BLOB blob = (BLOB) map. get ("pppList"); <br/> ObjectInputStream objStream = new ObjectInputStream (blob. getBinaryStream (); <br/> ArrayList <PPP> pppList = (ArrayList <PPP>) objStream. readObject (); <br/> objStream. close (); <br/> return pppList; <br/>} catch (IOException e) {<br/>} catch (ClassNotFoundException e) {<br/>} catch (SQLException e) {<br/>}< br/> return null; <br/>}
In sqlMap:
<ResultMap id = "pppResult" class = "java. util. hashMap "> <br/> <result property =" dataFileId "column =" data_File_Id "/> <br/> <result property =" pppList "column =" ppp_List "/> <br/> </resultMap> </p> <select id = "getPPPs" parameterClass = "java. lang. long "resultMap =" pppResult "> <br/> <! -- [CDATA [<br/> select * from ds_ppp where data_file_id = # value # <br/>] --> <br/> </select>