亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Spring jdbcTemplate應用(三)

系統 2142 0

在這篇文章里介紹用 JdbcTemplate進行數據庫插入操作,包括對blob或clob字段的插入 ?


還有對blob字段的取出操作。 ?


1.使用 JdbcTemplate往數據庫里插入數據,其中包含blob字段。 ?

Java代碼 ? ? 收藏代碼
  1. public ? boolean ?doSubmitWeekly( final ?WeeklyVO?weeklyVO)??
  2. ???????????? throws ?DataAccessException?{??
  3. ????????StringBuffer?sql?=? new ?StringBuffer();??
  4. ????????sql.append( "INSERT?INTO?WEEKLY_INFO_T?T?(T.F_START_TIME,?" );??
  5. ????????sql.append( "?????????????????????????????????T.F_END_TIME,?" );??
  6. ????????sql.append( "?????????????????????????????????T.F_DATE,?" );??
  7. ????????sql.append( "?????????????????????????????????T.F_OWNER,?" );??
  8. ????????sql.append( "?????????????????????????????????T.F_ANNEX_NAME,?" );??
  9. ????????sql.append( "?????????????????????????????????T.F_ANNEX)?" );??
  10. ????????sql.append( "??VALUES???(TO_DATE?(?,?'yyyy-mm-dd'),?" );??
  11. ????????sql.append( "????????????TO_DATE?(?,?'yyyy-mm-dd'),?" );??
  12. ????????sql.append( "????????????TO_DATE?(to_char(sysdate,'yyyy-mm-dd'),?'yyyy-mm-dd'),?" );??
  13. ????????sql.append( "?????????????,?" );??
  14. ????????sql.append( "?????????????,?" );??
  15. ????????sql.append( "?????????????)?" ); //blob字段 ??
  16. ??
  17. ????????Boolean?flag?=? new ?Boolean( false );??
  18. ??
  19. ???????? try ?{??
  20. ????????????flag?=?(Boolean)? this .getJdbcTemplate().execute(sql.toString(),??
  21. ???????????????????? new ?MyPreparedStatementCallback(weeklyVO));??
  22. ????????}? catch ?(Exception?e)?{??
  23. ????????????e.printStackTrace();??
  24. ????????}??
  25. ???????? return ?flag.booleanValue();??
  26. ????}??




MyPreparedStatementCallback類的實現 ?

Java代碼 ? ? 收藏代碼
  1. /** ?
  2. ?*?上傳附件回調操作類 ?
  3. ?*/ ??
  4. private ? class ?MyPreparedStatementCallback? implements ??
  5. ????????PreparedStatementCallback?{??
  6. ??
  7. ???? private ?WeeklyVO?weeklyVO;??
  8. ??
  9. ???? public ?MyPreparedStatementCallback(WeeklyVO?weeklyVO)?{??
  10. ???????? this .weeklyVO?=?weeklyVO;??
  11. ????}??
  12. ??
  13. ???? public ?Object?doInPreparedStatement(PreparedStatement?pstm)??
  14. ???????????? throws ?SQLException,??
  15. ????????????org.springframework.dao.DataAccessException?{??
  16. ??
  17. ????????pstm.setObject( 1 ,? this .weeklyVO.getStartTime());??
  18. ????????pstm.setObject( 2 ,? this .weeklyVO.getEndTime());??
  19. ????????pstm.setObject( 3 ,? this .weeklyVO.getOwner());??
  20. ????????pstm.setObject( 4 ,? this .weeklyVO.getAnnexName());??
  21. ???????? try ?{??
  22. ???????????? //?操作Blob?---這里WeeklyVO類的annex屬性是File類型 ??
  23. ????????????pstm.setBinaryStream( 5 ,? new ?FileInputStream( this .weeklyVO??
  24. ????????????????????????????.getAnnex()),?( int )?( this .weeklyVO.getAnnex()).length());??
  25. ???????????? //?操作Clob ??
  26. ???????????? /** ?
  27. ????????????pstm.setCharacterStream(5,?new?FileReader(this.weeklyVO ?
  28. ????????????????????????????.getAnnex()),?(int)?(this.weeklyVO.getAnnex()).length()); ?
  29. ????????????*/ ??
  30. ????????}? catch ?(FileNotFoundException?e)?{??
  31. ????????????e.printStackTrace();??
  32. ???????????? return ? new ?Boolean( false );??
  33. ????????}??
  34. ??
  35. ???????? try ?{??
  36. ????????????pstm.execute();??
  37. ???????????? return ? new ?Boolean( true );??
  38. ????????}? catch ?(Exception?e)?{??
  39. ????????????e.printStackTrace();??
  40. ???????????? return ? new ?Boolean( false );??
  41. ????????}??
  42. ????}??
  43. ??
  44. }??




2 .使用 JdbcTemplate讀取數據庫中的blob字段信息(把blob內容寫到臨時目錄) ?

Java代碼 ? ? 收藏代碼
  1. public ?Map?doSelectWeekly(String?weeklyId)? throws ?DataAccessException?{??
  2. ????????String?sql?=? "select?t.f_annex_name,t.f_annex?from?weekly_info_t?t" ??
  3. ????????????????+? "?where?t.f_weekly_id?=?" ?+?weeklyId;??
  4. ????????Map?map?=? new ?HashMap();??
  5. ????????map?=?(Map)? this .getJdbcTemplate().execute(sql,??
  6. ???????????????? new ?CallableStatementCallback()?{??
  7. ??
  8. ???????????????????? public ?Object?doInCallableStatement(CallableStatement?stmt)??
  9. ???????????????????????????? throws ?SQLException,??
  10. ????????????????????????????org.springframework.dao.DataAccessException?{??
  11. ????????????????????????ResultSet?rs?=?stmt.executeQuery();??
  12. ????????????????????????Map?map?=? new ?HashMap();??
  13. ????????????????????????InputStream?inputStream?=? null ;??
  14. ????????????????????????String?name?=? "" ;??
  15. ????????????????????????String?path?=?System.getProperty( "java.io.tmpdir" )??
  16. ????????????????????????????????+? "/" ;??
  17. ????????????????????????File?temp?=? new ?File(path);??
  18. ???????????????????????? if ?(!temp.exists())?{??
  19. ????????????????????????????temp.mkdir();??
  20. ????????????????????????}??
  21. ????????????????????????temp?=? null ;??
  22. ??
  23. ???????????????????????? while ?(rs.next())?{??
  24. ????????????????????????????inputStream?=?rs.getBinaryStream( "f_annex" ); //?讀取blob ??
  25. ??
  26. ???????????????????? //Reader?fileReader?=?rs.getCharacterStream("f_annex");//?讀取clob ??
  27. ????????????????????????????name?=?rs.getString( "f_annex_name" );??
  28. ????????????????????????????path?+=?name;??
  29. ????????????????????????????File?fileOutput?=? new ?File(path);??
  30. ??
  31. ????????????????????????????FileOutputStream?fo;??
  32. ???????????????????????????? try ?{??
  33. ????????????????????????????????fo?=? new ?FileOutputStream(fileOutput);??
  34. ???????????????????????????????? int ?readed;??
  35. ???????????????????????????????? //?將附件寫到臨時目錄里 ??
  36. ???????????????????????????????? while ?((readed?=?inputStream.read())?!=?- 1 )?{??
  37. ????????????????????????????????????fo.write(readed);??
  38. ????????????????????????????????}??
  39. ????????????????????????????????fo.close();??
  40. ????????????????????????????}? catch ?(FileNotFoundException?e)?{??
  41. ????????????????????????????????e.printStackTrace();??
  42. ????????????????????????????}? catch ?(IOException?e)?{??
  43. ????????????????????????????????e.printStackTrace();??
  44. ????????????????????????????}??
  45. ????????????????????????}??
  46. ????????????????????????map.put( "annexName" ,?name);??
  47. ????????????????????????map.put( "filePath" ,?path);??
  48. ???????????????????????? return ?map; //返回文件名稱和文件所在路徑,供頁面下載用。 ??
  49. ????????????????????}??
  50. ??
  51. ????????????????});??
  52. ???????? return ?map;??
  53. ????}??




附:下載blob內容代碼片段(先把blob內容寫到臨時目錄在從臨時目錄下載) ?

Java代碼 ? ? 收藏代碼
  1. Map?map?=?weeklyServise.doSelectWeekly( "52" ); //參數為附件ID ??
  2. String?annexName?=?(String)?map.get( "annexName" );??
  3. String?path?=?(String)?map.get( "filePath" );??
  4. ??
  5. BufferedInputStream?bis?=? null ;??
  6. BufferedOutputStream?bos?=? null ;??
  7. OutputStream?fos?=? null ;??
  8. InputStream?fis?=? null ;??
  9. ??
  10. String?filepath?=?path;??
  11. System.out.println( "文件路徑" ?+?filepath);??
  12. java.io.File?uploadFile?=? new ?java.io.File(filepath);??
  13. //從低級流構造成高級流 ??
  14. fis?=? new ?FileInputStream(uploadFile);??
  15. bis?=? new ?BufferedInputStream(fis);??
  16. fos?=?response.getOutputStream();??
  17. bos?=? new ?BufferedOutputStream(fos);??
  18. //設置下載文件名 ??
  19. response.setHeader( "Content-disposition" ,? "attachment;filename=" ??
  20. ????????+?URLEncoder.encode(annexName,? "utf-8" ));??
  21. int ?bytesRead?=? 0 ;??
  22. byte []?buffer?=? new ? byte [ 4096 ];??
  23. while ?((bytesRead?=?bis.read(buffer,? 0 ,? 4096 ))?!=?- 1 )?{??
  24. ????bos.write(buffer,? 0 ,?bytesRead); //開始下載數據 ??
  25. }??
  26. bos.flush();??
  27. fis.close();??
  28. bis.close();??
  29. fos.close();??
  30. bos.close();??
  31. java.io.File?temp?=? new ?java.io.File(System.getProperty( "java.io.tmpdir" )+ "/" );??
  32. if (temp.isDirectory()){??
  33. ????FileUtils.deleteDirectory(temp); //刪除臨時文件夾 ??
  34. }??
  35. return ? null ;??

?

Spring jdbcTemplate應用(三)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 波多野结衣一区免费作品 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 亚洲图片国产日韩欧美 | 日韩欧美一区二区三区在线 | 农村苗族一级特黄a大片 | 成 人 a v免费视频 | 麻豆一区二区三区在线观看 | 国产99视频在线 | 国产伦精品一区二区三区视频小说 | 精品国产免费第一区二区三区日韩 | 四虎4hu永久在线观看 | 中文国产欧美在线观看 | 波多野结衣xxxx性精品 | 在线观看日本中文字幕 | 在线观看日本人免费视频色 | 中文字幕国产欧美 | 999热这里全都是精品 | 亚洲va高清中文字幕 | 免费一级毛片在线视频观看 | 九九热这里只有 | 国产欧美一区视频在线观看 | 亚洲图区欧美 | 一区二区日本 | 亚洲另类伦春色综合妖色成人网 | 久久99精品久久久久久国产越南 | 中文字幕日韩精品麻豆系列 | 在线高清一级欧美精品 | 欧日韩美香蕉在线观看 | 黄色网址在线免费 | 欧美日韩中文亚洲v在线综合 | 久久美剧免费在线观看 | 色偷偷免费视频 | 毛片色情 | 热久久影院 | 欧美午夜在线观看理论片 | 日本在线播放一区 | 2022国产成人综合精品 | 久草在线视频看看 | 亚洲图片另类 | 老子影院午夜伦手机不四虎 | 精品播放|