1. 程式人生 > >java SSM第三章學習內容(動態SQL語句)

java SSM第三章學習內容(動態SQL語句)

一. if判斷語句

用法:可以在SQL語句下加if標籤用於判斷

xml

<!-- if判斷 -->
      <select id="selectif" resultMap="BillProviderResult">
          SELECT sb.id,sb.billCode,sb.productName,sp.id,sp.proName,sb.totalPrice,sb.isPayment,sb.creationDate 
          FROM smbms_bill sb,smbms_provider sp  WHERE  sb.id=sp.id
          <if test="id!=null and id !=0">
              and sb.id=#{id}
          </if>
           <if test="isPayment=1 and isPayment=2">
              and  sb.isPayment=#{isPayment}
          </if>
          <if test="productName!=null and productName!=''">
              and sb.productName Like CONCAT(#{productName},'%')
          </if> 
      </select>

介面



//if查詢
    List<Bill> selectif(@Param("id")int id,@Param("isPayment")int isPayment,@Param("productName")String productName);


二. if - where

用法:可以在SQL語句下加<where>標籤用於新增條件,在裡面巢狀if進行判斷

xml


  <!-- if where -->
          <select id="selectifwhere" resultMap="ProviderBillResult">
              SELECT id,proCode,proName,proContact,proPhone,proAddress,creationDate FROM
               smbms_provider  
              <where>
              <if test="proCode!=null and proCode!=''">
                  and proCode Like CONCAT(#{proCode},'%')
              </if>
              <if test="proName!=null and proName!=''">
                  and proName Like CONCAT(#{proName},'%')
              </if>
              </where>
          </select>
介面

//if where
    List<Provider> selectifwhere(@Param("proCode")String proCode,@Param("proName")String proName);


三.    if set

用法:可以在SQL修改語句下加<if>標籤用於新增條件判斷

xml:
    <!-- if+set -->    
          <update id="updateifset" parameterType="com.entity.Provider">
          UPDATE smbms_provider
          <set>
              <if test="proName!=null and proName!=''">
              proName =#{proName}
              </if>
          </set>
              WHERE id=#{id}
          </update>

介面:

//if set
    int updateifset(Provider provider);

四. trim

用法:用於查詢或則修改語句,<trim prefix="set">可以設定引數

xml

更改:

<!-- trim -->
          <update id="updatetrim" parameterType="com.entity.Provider">
          UPDATE smbms_provider
          <trim prefix="set">
          <if test="proName!=null and proName!=''">
              proName =#{proName}

查詢:
<!-- if trim -->
      <select id="selectIfTrim" resultType="com.entity.Role" parameterType="String">
          SELECT * FROM smbms_role
          <trim prefix="where" >
              <if test="roleName!=null and roleName!=''">
                   roleName LIKE CONCAT ('%',#{roleName})
              </if>
          </trim>
          LIMIT 0,2
          </if>
          </trim>
          WHERE id=#{id}
          </update>    


介面
    //trim
    int updatetrim(Provider provider);




五. forEach

用於:SELECT * FROM smbms_provider WHERE id IN 語句

    <!-- forEach 陣列-->
          <select id="selectForEach" resultMap="ProviderBillResult">
              SELECT * FROM smbms_provider WHERE id IN 
              <foreach collection="array" item="id" open="(" separator="," close=")">
              #{id}
              </foreach>
          </select>    
    
    <!-- forEach list集合-->
        <select id="selectForEach2" resultMap="ProviderBillResult">
              SELECT * FROM smbms_provider WHERE id IN 
              <foreach collection="list" item="id" open="(" separator="," close=")">
              #{id}
              </foreach>
          </select>    
          
       <!-- forEach Map入參-->
           <select id="selectForEach3" resultMap="ProviderBillResult">
               SELECT * FROM smbms_provider WHERE id IN 
               <foreach collection="Map" item="id" open="(" separator="," close=")">
              #{id}
              </foreach>
           </select>

//forEach 陣列
    List<Provider> selectForEach(String[] id);
    //forEach 集合
    List<Provider> selectForEach2(List<String> list);
    //forEach Map
    List<Provider> selectForEach3(Map<String,Object> map);

六. Choose 分支

<!-- Choose 分支-->
       <select id="selectChoose" resultMap="ProviderBillResult">
       SELECT id,proCode,proName,proContact,creationDate FROM smbms_provider WHERE 1=1 
           <choose>
                <when test="proCode!=null and proCode!=''">
                    and proCode Like CONCAT('%',#{proCode},'%')
                </when>
                <when test="proName!=null and proName!=''">
                   and proName Like CONCAT('%',#{proCode},'%')
                </when>
                <when test="proContact!=null andproContact!=''">
                   and proContact Like CONCAT('%',#{proContact},'%')
                </when>
                <otherwise>
                    creationDate>'2014-00-00'
                </otherwise>
                
           </choose>

//Choose
    List<Provider> selectChoose(@Param("proCode")String proCode,@Param("proName")String proName,
            @Param("proContact")String proContact,@Param("creationDate")Date creationDate);

七. 分頁
     <!-- 分頁 -->
       <select id="selectLimit" resultMap="ProviderBillResult">
           SELECT * FROM  smbms_provider ORDER BY creationDate DESC LIMIT #{page1},#{page2}
       </select>

//limit分頁
    List<Provider> selectLimit(@Param("page1")int page1,@Param("page2")int page2);

相關推薦

java SSM學習內容動態SQL語句

一. if判斷語句 用法:可以在SQL語句下加if標籤用於判斷 xml <!-- if判斷 -->       <select id="selectif" resultMap="BillProviderResult">           SELECT

java SSM學習內容oracle儲存過程

儲存過程 edit進入文字編輯器中 /指定語句 DBMS_OUTPUT.PUT_LINE('操作完畢'||a);輸出一段話 commit;提交 set serverout on   列印一段話之前要先設定基本型別 declare      //設定變數,直接賦值可以:=9

寄存器內存訪問相關內容總結

管理 讀寫 理解 元組 實驗 記錄 需要 默認 內部 在本章中,我們從訪問內存的角度繼續學習了幾個寄存器。我們提出字單元的概念:字單元,即存放一個字型數據(16位)的內存單元,由兩個地址連續的內存單元組成。高地址內存單元中存放字型數據的高位字節,低地址內存單元中

控件6~7課

pan 獨立 兩種 color 代碼 父窗口 及其 所有 外觀 第6課:創建和使用控件 第7課:常用控件 概述: 在MFC中,控件是具有獨立功能的人機交互的小窗口,它們除了可以使用自身成員外,還可使用其基類CWnd類的公有成員,因為幾乎所有的控件類都是從CWnd類派生而

寄存器內存訪問

push 來安 直接 分享圖片 info cpu 防止 修改 mov指令 一、一個字=兩個字節。地位字節存放在低地址單位中,高位字節存放在高地址單元中,取低地址內存單元作為字數據地址。(小端法) 引入概念:字單元:存放一個字型數據的內存單元,由兩個地址連

MySQL中根據if標籤實現多條件模糊查詢動態SQL語句

 if標籤  if標籤可用在許多型別的sql語句中,我們以查詢為例。首先看一個很普通的查詢: Xml程式碼   <!-- 查詢學生list,like姓名 -->   <select id="getStudentListLikeName" pa

JAVA 程式設計題解與上機指導四版表達式和流程控制語句 題3.9

/**3.9編寫列印乘法口訣表*/ public class MultipleTable { public static void main(String args[]) {MultipleTable multiple=new MultipleTable(); int n=

《機器學習》 周志華學習筆記 線性模型課後習題python 實現

線性模型 一、內容 1.基本形式 2.線性迴歸:均方誤差是迴歸任務中最常用的效能度量 3.對數機率迴歸:對數機率函式(logistic function)對率函式是任意階可導的凸函式,這是非常重要的性質。 4.線性判別分析(LDA 是一種降維的方法) 5.多分類學習:

201711671106《Java程式設計》學習總結

教材學習內容總結 學習了第三章運算子,表示式和基本的java語句 運算子與表示式 一、算數運算子:  二目運算子:+  -  *  /  % 單目運算子:++  --

201711671135 《Java程式設計》學習總結

  本章主要學習了運算子,感覺Java中大部分運算子和C語言相同,基本語句如條件分支語句、迴圈語句等也和C語言類似。 1.算術運算子:①加減運算子(+,-),二目運算子(連線兩個操作元的運算子)。加減的結合方向是從左到右。是整型或者浮點型資料,優先順序4級。   &n

java SSH第一學習內容Struts2攔截器,攔截器堆疊

Struts2攔截器,需要導相應的jar包及複製Struts.xml檔案到src目錄下,web.xml進行修改 攔截器 在訪問Action的時候進行攔截處理,需要繼承AbstractInterceptor,重寫intercept方法案例一:在訪問Action輸出一句話(買電腦

java基礎

als int 基本 多重if != 邏輯 ignorecas ignore 邏輯與 一、基本if結構   1、流程圖 輸入輸出 判斷和分支 流程線

201671010138 2016-2017java學習心得

心得 執行 fff 解決 實例 -- 子類 sta contain                 第三章是java真正的一個開端,我們開始正式的接觸它的語法結構、變量類型、輸入輸出及運算等。           也初步接觸了string類,認識了它的API及構造,與其類同

《深入理解計算機系統》學習筆記

並發 錯誤 ia32 庫函數 容易 簡單 linux 嚴重 格式 通過本周的學習,總結出一下知識內容 機器級代碼 計算機系統使用了多種不同形式的抽象,利用更簡單的抽象模型來隱藏實現的細節。 對於機器級編程來說,其中兩種抽象尤為重要: 1、指令集體系結構(Instructio

Linux學習筆記1

命令 hiho 並且 ron 增加 如果 mkdir strong lin Linux第三周學習筆記(1)2.20 特殊權限stick_bit特殊權限stick_bit:意為防刪除位。文件是否可以被某一個用戶刪除,主要取決於該文件所在目錄是否對該用戶具有寫的權限。如果沒有寫

《構建之法》學習筆記

log 設計思想 水平 行業 如何 階段 檢測 應該 blog 《構建之法》第三章 軟件工程師的成長 個人能力的衡量與發展 軟件團隊和團隊中的工程師也是這樣。軟件系統的絕大部分模塊都是由個人開發或維護的。在軟件工程的術語中,我們把這些單個的成員叫做Individ-ual C

20165233 Java第二、學習總結

符號 int() 編譯運行 while 常量 java color ima 進行 2017-2018-2 《Java程序設計》第二周學習總結 教材學習內容總結 第二、三章 ch2 標識符與關鍵字 基本數據類型: 邏輯類型:boolean 整數類型:int、byte、sho

Python學習筆記2

學習筆記選擇排序: 時間復雜度O(n**2) 沒有辦法知道當前輪是否已經達到排序要求,但是可以知道極值是否在目標索引位置上 遍歷次數1,...,n-1之和n(n-1)/2 對比冒泡法:減少了交換次數,提高了效率,性能略好 方法三、四實際上降低的是平均時間復雜度 方法一: nums = [1, 2, 6,

Python學習筆記1

學習筆記;內建函數;字典;列表解析式字典 key-value鍵值對的數據的集合 可變的、無序的、key不重復 初始化: d = dict() d = {} d = dict(**kwargs) 如:d = dict(a=1,b=2) dict(iterable, **kwarg) 使用可叠代對象和na

《Spring Security3》部分翻譯下密碼加salt

文件 auth ans 大小 ack 工程師 新的 bool get 你是否願意在密碼上添加點salt? 如果安全審計人員檢查數據庫中編碼過的密碼,在網站安全方面,他可能還會找到一些令其感到擔心的地方。讓我們查看一下存儲的admin和guest用戶的用戶名和密碼值