Mybatis常用總結:參數,返回,執行sql,include等

来源:http://www.cnblogs.com/itechpark/archive/2016/10/29/yinzei_mybatis.html
-Advertisement-
Play Games

1.參數註入1.1用#{0},#{1}的形式,0代表第一個參數,1代表第二個參數 public List<RecordVo> queryList(String workerId, Integer topNum); <select id="queryList" resultType="com.demo ...


1.參數註入
1.1用#{0},#{1}的形式,0代表第一個參數,1代表第二個參數
  public List<RecordVo> queryList(String workerId, Integer topNum);

  <select id="queryList" resultType="com.demo.RecordVo">
    SELECT ID id, WORKER_ID workerId, UPDATE_DATE updateDate
    FROM USER_RECORDS t
    WHERE t.WORKER_ID = #{0}
    LIMIT #{1}
  </select>
1.2Map或者封裝對象,workerId為map裡面的鍵;如果是對象則workerId為對象中的屬性,這種方法非常常用
  public Integer queryCountByWorkerId(Map queryParam);
  <select id="queryCountByWorkerId" parameterType="java.util.Map" resultType="java.lang.Integer">
    SELECT COUNT(1)
    FROM tableName F
    WHERE F.WORKER_ID = #{workerId}
  </select>

1.3註解
  public Integer queryCountByWorkerId(@param(“workerId”)String workerId);
  <select id="queryCountByWorkerId" parameterType="java.util.Map" resultType="java.lang.Integer">
    SELECT COUNT(1)
    FROM tableName F
    WHERE F.WORKER_ID = #{workerId}
  </select>
2.返回
2.1映射<!-- 實體類與表欄位對應 -->
  <resultMap type="com.demo.DataModule" id="dataModule">
    <result column="ID" property="id" />
    <result column="CREATE_DATE" property="createDate" />
    <result column="WORKERID" property="workerId" />
    <result column="UPDATE_DATE" property="updateDate" />
    <result column="STATUS" property="status" />
  </resultMap>
  <select id="queryAll" resultType="dataModule">
    select ID,CREATE_DATE,WORKERID from tableName
  </select>

  這種方式查詢語句查詢的欄位直接就是資料庫裡面的欄位就好了,就定義映射的column
2.2直接返回對象
  <select id="queryAll" resultType="com.demo.DataModule">
    select ID id,CREATE_DATE createDate,WORKERID workerId from tableName
  </select>

  這裡查詢返回的欄位別名必須對應返回對象中的屬性

3.執行原生sql
3.1sql參數:
  public class ParamVo {

    private String sql;
    //getter setter 省略

  }

3.2介面:
  /**
  * @功能描述: 創建
  * @param vo
  * @return
  */
  public int excuteCreateSql(ParamVo vo);

  /**
  * @功能描述: 查詢
  * @param vo
  * @return
  */
  public List<Map<String, Object>> excuteSelectSql(ParamVo vo);

3.3xml:
  <update id="excuteCreateSql">
    ${sql}
  </update>
  ${}不編譯sql直接執行,如果用#{sql}可能報錯

  <select id="excuteSelectSql" resultType="java.util.Map">
    ${sql}
  </select>
  這裡不知道返回類型用map或者hashmap作為返回

4.include:有時候兩個方法要返回的欄位都一樣或者where子句一樣,這樣為了避免重覆寫代碼,就抽出來用include
4.1定義子句相同部分
  <sql id="queryChild">
    FROM tableName1 F
    RIGHT JOIN tableName2 C ON F.WORKER_ID = C.WORKER_ID
    WHERE F.STATUS = 1 AND F.WORKER_ID = #{workerId}
    ORDER BY C.CREATE_DATE DESC
  </sql>
4.2引用
  <select id="queryCountByWorkerId" parameterType="java.util.Map" resultType="java.lang.Integer">
    SELECT COUNT(1)
    <include refid="queryChild"/>
  </select>
  <select id="queryListByWorkerId" parameterType="java.util.Map" resultType="com.demo.RecordVo">
    SELECT ID id, WORKER_ID workerId, UPDATE_DATE updateDate,......
    <include refid="queryChild"/>
  </select>

 

僅供參考,不足之處還請見諒,歡迎指正!轉載請標明出處。如有疑問,歡迎評論或者聯繫我郵箱[email protected]

 


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

-Advertisement-
Play Games
更多相關文章
  • 只要根據錯誤提示,找到相應文件夾下的\obj\Debug文件夾下的 相應名字.csproj.FileListAbsolute.txt, 打開並刪除含有'<<<<<<< .mine'或類似的欄位,重新編譯即可。 項目的.csproj 下相關'<<<<<<< .mine'或類似的欄位也需要刪除! ...
  • 在項目中遇到列印日誌或者處理異常這再常見不過了,通常service層處理日誌每個方法都寫一遍logger.info()太麻煩了。而aop恰好可以解決這個問題,寫一個aop的類就能處理這個問題了,spring更是擁有強大的aop功能。那就看看springaop到底多麼簡便吧! ...
  • 測試環境:php5.3.29 sort_flags 可以用以下值改變排序的行為: 排序類型標記: SORT_REGULAR - 正常比較單元(不改變類型) SORT_NUMERIC - 單元被作為數字來比較 SORT_STRING - 單元被作為字元串來比較 SORT_LOCALE_STRING - ...
  • 在我心中類載入一直是很迷人的,主要的原因是覺得為何能夠這個過程是如何運作的。最近在總結自己以前學過的東西,所以也就總結一下類載入器這方面的東西。 對於為何將載入類這樣一個那麼重要的事放在JVM外部在實現,我覺的最主要的原因是為了提供更好的擴展性吧,讓程式員自己去決定如何載入一個類。根據書上的說法是這 ...
  • Mybatis是業界非常流行的持久層框架,輕量級、易用,在金融IT領域完全是領軍地位,比Hibernate更受歡迎,優勢非常多,也是非常值得我們學習的。但Mybatis並不盡善盡美,其自身的設計、編碼也還有許多不足,甚至是缺陷,這篇文章來簡要討論一下這些缺陷: 1.Mybatis使用DTD作為XML ...
  • StringGrid的Options的goRowSelect為false時,在點擊右側未顯示完全的Cell,StringGrid會自動向左滾動,怎樣設定,取消StringGrid的自動滾動啊?Delphi7版的 終於自己找到解決辦法了:拷貝Grids.pas到自己項目的目錄,修改 procedure ...
  • ...
  • 學習Java的同學註意了!!! 學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:279558494 我們一起學Java! 一、基礎篇 1.1 JVM 1.1.1. Java記憶體模型,Java記憶體管理,Java堆和棧,垃圾回收 http://www.jcp.org/e ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...