Java程式員的日常—— POI與JDBC、Mockmvc與單元測試

来源:http://www.cnblogs.com/xing901022/archive/2016/09/05/5843892.html
-Advertisement-
Play Games

周日沒怎麼休息好,周一一天都迷迷糊糊的,不過還算是幹了不少的活。 總結一下,大致有以下幾點內容: 1 使用poi以及mysql jdbc實現了一個複雜excel的導入 2 基於工程原有的代碼,書寫spring mvc的業務代碼以及測試用例 使用POI以及jdbc POI是用於處理excel文件很常用 ...


周日沒怎麼休息好,周一一天都迷迷糊糊的,不過還算是幹了不少的活。

總結一下,大致有以下幾點內容:

  • 1 使用poi以及mysql jdbc實現了一個複雜excel的導入
  • 2 基於工程原有的代碼,書寫spring mvc的業務代碼以及測試用例

使用POI以及jdbc

POI是用於處理excel文件很常用的工具,如果你的excel是比較老的版本,記xls結尾的,那麼只使用poi就行了。如果是xlsx結尾的,還需要引入xssf的jar包。

參考maven的pom.xml配置:

    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.14</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.14</version>
    </dependency>

使用的話,這裡就簡單介紹下數據的讀取:

InputStream stream = new FileInputStream("絕對路徑\\文件名.xlsx");//獲得輸入流

XSSFWorkbook wb=new XSSFWorkbook(stream);//xlsx版本使用XSSFWorkbook

Sheet sheet1 = wb.getSheetAt(1);//獲取制定的sheet頁內容

for(int i=0,total = sheet1.getLastRowNum();i<total;i++){
    Row row = sheet1.getRow(i);//row.getCell(no)就能獲取指定列的內容
}

JDBC動態參數

使用JDBC還是很基礎的內容了,這裡使用動態sql動態拼接條件:

sql = "select id from scp_b where name=? and code=?";

相應的查詢:

PreparedStatement sta = conn.prepareStatement(sql);
sta.setString(1, "xxx";
sta.setString(2, "yyyy");
ResultSet rs = sta.executeQuery();
while(rs.next()){
    System.out.println(rs.getString("id"));
}
sta.close();

使用Mockmvc進行mvc的單元測試

以前沒有web mvc的單元測試經驗,所以這部分的內容還得繼續學習下,才能總結好。

不過,有一點還是需要明確的,就是單元測試。
單元測試,是最基本的程式驗證的方法。之前還流行過TDD測試驅動開發的軟體方法論,即需要先寫出測試用例,然後再去寫實現。這樣的好處就是在編寫實現之前,就明確知道輸入是什麼,輸出是什麼...不過,真正做到這點的,全國也沒有多少吧。大多是寫完實現,開發者自己補上測試用例,用來驗證一些簡單的場景而已。

@WebAppConfiguration
public class aaaTest extends BaseTest {
    
    @Autowired
    private WebApplicationContext wac;
    
    private MockMvc mockMvc;
    
    @Before
    public void setup() {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
    }
    
    @Test
    public void OrderTendencyDataProfilingChart() throws Exception{
        this.mockMvc.perform(post("/a/b")
                .accept(MediaType.APPLICATION_JSON)
                .characterEncoding("UTF-8")
                .param("1", "2")
                .header(ApiTokenUtils._tokenName, ApiTokenUtils.getToken()))
        .andExpect(status().isOk())
        .andDo(new ResultHandler() {
            @Override
            public void handle(MvcResult result) throws Exception {
                result.getResponse().setCharacterEncoding("UTF-8");
                String content = result.getResponse().getContentAsString();
                System.out.println(content);
            }
        });
    }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 自定義可左右滑動、拖拽滑動的平面柱狀圖 在做這種樣式控制項之前,可先瀏覽我之前預研的控制項: A、自定義左右滑動ScrollViewer(可拖動滑動) B、自定義Bar柱狀圖 OK,現在說下控制項具體設計過程: 1)採用Grid佈局,這樣可以將Y軸的標題設置平均高度,X軸的柱子也可以平均。 當然X軸也會存 ...
  • 一個程式猿在夢中解決的 Bug 沒有人是不做夢的,在所有夢的排行中,白日夢最令人傷感。不知道身為程式猿的大家,有沒有睡了一覺,然後在夢中把睡之前代碼中怎麼也搞不定的 Bug 給解決的經歷?反正我是有過。 什麼是 AOP ? AOP 為 Aspect Oriented Programming 的縮寫, ...
  • 一、概述 WeakHashMap是Map的一種,根據其類的命令可以知道,它結合了WeakReference和HashMap的兩種特點,從而構造出了一種Key可以自動回收的Map。 前面我們已經介紹了WeakReference的特點及實現原理,以及HashMap的實現原理,所以我們本文重點介紹Weak ...
  • C++混合編程輔助工具, 方便將C++功能導出到腳本語言如Lua,Python中使用 ...
  • B - 大還是小? Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: B - 大還是小? Description 輸入兩個實數,判斷第一個數大,第二個數大還是一樣大。每個數的格式為: [整數部分].[小數部分] 簡單起見,整數部分和小數部 ...
  • 繼續收集python3編碼問題相關資料 資料來源 鵬程的新浪博客(轉載)http://blog.sina.com.cn/s/blog_6d7cf9e50102vo90.html 這篇鵬程老師寫的關於python3的編碼的博客寫的特別的清楚,直接就摘入下來。供自己作為參考。 1.從位元組說起: 一個位元組 ...
  • 一.安裝之前先得知道怎麼下載吧: 一般網上找到的資料是到這裡就GG了的 --> http://spring.io/tools/sts/all 很明顯這點版本是不夠我們需要的,假如我們的eclipse是4.4.1怎麼辦.那麼奇淫技巧來了,我們自己拼接下載地址,點擊 進入我們需要的所有sts的版本,選擇 ...
  • Java有四種訪問許可權, 其中三種有訪問許可權修飾符,分別為private,public和protected,還有一種不帶任何修飾符。 下麵用表格的形式來展示四種訪問許可權之間的異同點,這樣會更加形象。表格如下所示: 同一個類 同一個包 不同包的子類 不同包的非子類 Private √ Default ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...