1. 程式人生 > >MyBatis學習筆記(3)---動態sql語句

MyBatis學習筆記(3)---動態sql語句

通過mybatis提供的各種標籤方法實現動態拼接sql

1、if標籤

<!-- 根據條件查詢使用者 -->

<select id="queryUserByWhere" parameterType="user" resultType="user">

SELECT id, username, birthday, sex, address FROM `user`

WHERE 1=1

<if test="sex != null and sex != ''">

AND sex = #{sex}

</if>

<if test="username != null and username != ''">

AND username LIKE

'%${username}%'

</if>

</select>

2、where標籤

<!-- 根據條件查詢使用者 -->

<select id="queryUserByWhere" parameterType="user" resultType="user">

SELECT id, username, birthday, sex, address FROM `user`

<!-- where標籤可以自動新增where,同時處理sql語句中第一個and關鍵字 -->

<where>

<if test="sex != null">

AND sex = #{sex}

</if>

<if test="username != null and username != ''">

AND username LIKE

'%${username}%'

</if>

</where>

</select>

3、sql片段標籤

<!-- 根據條件查詢使用者 -->

<select id="queryUserByWhere" parameterType="user" resultType="user">

<!-- SELECT id, username, birthday, sex, address FROM `user` -->

<!-- 使用include標籤載入sql片段;refid是sql片段id -->

SELECT <include refid="userFields" /> FROM `user`

<!-- where標籤可以自動新增where關鍵字,同時處理sql語句中第一個and關鍵字 -->

<where>

<if test="sex != null">

AND sex = #{sex}

</if>

<if test="username != null and username != ''">

AND username LIKE

'%${username}%'

</if>

</where>

</select>


<!-- 宣告sql片段 -->

<sql id="userFields">

id, username, birthday, sex, address

</sql>

4、foreach標籤:向sql傳遞陣列或List,mybatis使用foreach解析

<!-- 根據ids查詢使用者 -->

<select id="queryUserByIds" parameterType="queryVo" resultType="user">

SELECT * FROM `user`

<where>

<!-- foreach標籤,進行遍歷 -->

<!-- collection:遍歷的集合,這裡是QueryVo的ids屬性 -->

<!-- item:遍歷的專案,可以隨便寫,,但是和後面的#{}裡面要一致 -->

<!-- open:在前面新增的sql片段 -->

<!-- close:在結尾處新增的sql片段 -->

<!-- separator:指定遍歷的元素之間使用的分隔符 -->

<foreach collection="ids" item="item" open="id IN (" close=")"

separator=",">

#{item}

</foreach>

</where>

</select>


​​​​​

相關推薦

MyBatis學習筆記3---動態sql語句

通過mybatis提供的各種標籤方法實現動態拼接sql 1、if標籤 <!-- 根據條件查詢使用者 --> <select id="queryUserByWhere" param

mybatis學習筆記- 動態 SQL

工程目錄 1. 環境配置 1.1 建立 EmployeeMapperDynamicSQL 介面 1.2 建立 EmployeeMapperDynamicSQL.xml 檔案 2. 重要標籤的使用 2.1 在 EmployeeMapperDynamicSQL 中

Mybatis學習筆記--動態sql拼接

介紹 通過mybatis提供的各種標籤方法實現動態拼接sql Mybatis動態sql---<sql>與<include> <!-- 使用include標籤載入sql片段;refid是sql片段id --> <sql id="select"&

Python學習筆記3動態型別

is運算子 ==是值相等而is必須是相同的引用才可以 l=[1,2,3] m=[1,2,3] print(l==m) # True print(l is m) # False sys模組 getrefcount() 查詢物件存在的引用次數 import sys print(sys.getrefco

Mybatis學習筆記3之高階功能

高階功能 對映關係 一對一對映 SQL語句:使用者訂單查詢 SELECT  orders.*,   USER.username,  USER.sex,  USER.address FROM  orders,  USER WHERE orders.user_id = u

myBatis學習筆記3——實體屬性名與表字段名不匹配問題

問題 <select id="getUser" parameterType="String" resultType="User"> select

MyBatis 筆記——動態 SQL

在開發中,經常會遇到要執行的 SQL 語句其實並不是固定,而是隨條件的變化而變化的。對於這種情況 MyBatis 也有解決方案。 隨條件變化的 SQL 先看一個固定的 SQL 語句,查詢指定 name 和 age 的人: <resultMap

Mybatis學習筆記--mapper動態代理

Mapper介紹 Mapper介面開發方法只需要程式設計師編寫Mapper介面(相當於Dao介面),由Mybatis框架根據介面定義建立介面的動態代理物件,代理物件的方法體同上邊Dao介面實現類方法。   Mapper介面開發需要遵循以下規範: Mapper.xm

TCP/IP詳解學習筆記3IP協議ARP協議和RARP協議

out 處理機 傳輸 包含 發送 res 這也 進行 默認 把這三個協議放到一起學習是因為這三個協議處於同一層,ARP協議用來找到目標主機的Ethernet網卡Mac地址,IP則承載要發送的消息。數據鏈路層可以從ARP得到數據的傳送信息,而從IP得到要傳輸的數據信息。   

myBatis學習筆記10——使用攔截器實現分頁查詢

條件 iba execute rri itl alias property gen func 1. Page package com.sm.model; import java.util.List; public class Page<T&g

spring學習筆記3——bean配置細節註意

collect 1.5 之前 ice ble person name return 引用 1. 一個bean引用另外一個bean 當Person類中有一個屬性是Car,那麽該如何配置呢 person: package com.zj.spring; public class

QT學習筆記3 我的第一個程序

9.png har 中文 gets 有一個 setw 通過 坐標 關系 今天,學習搭建一個空項目,了解程序是如何運行的。 (1)新建一個空項目   1、在創建完空項目之後,項目中只有一個空的項目文件( .pro)        2、然後需要在項目文件(.pro)中添加:

Hibernate學習筆記3---hibernate關聯關系映射

gen -m type foreign out eas ner 機制 路徑 一對一關聯 假設有兩個持久化類(實體類)User與Address,它們之間存在一對一的關系 1,通過主鍵關聯(個人偏向另外一種) User.hbm.xml文件配置 <id name="u

C++深度解析教程學習筆記3函數的擴展

插入 分享 技術 lsp 預處理器 _for 返回 忽略 結合 1.內聯函數 1.1.常量與宏的回顧 (1)C++中的 const 常量可以替代宏常數定義,如: const int A = 3; //等價於 #define A 3 (2)C++中是否有解決方案,可以用來

shell學習筆記3

shell 基礎 雜記if 一、if基礎 1、單分支 1.1 語法 if語句語法 單分支結構語法: if [條件]; then 指令 fi 或 if [條件] then 指令 fi 1.2 例子 [roo

Python學習筆記3

python重要的數據類型Dict和Setdict通過key 查找value(key和value關聯)花括號{ }表示這是一個dict,然後按照key:value,寫出來即可。最後一個key:value的都好可以省略 註意: 單元素的tuple必須在後面多家加一個逗號dict最後的逗號可以省略由於dict也是

JavaEE--Mybatis學習筆記

一個數 border none 取出 bean 需要 table add 基金 一、簡介: MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為M

JavaEE--Mybatis學習筆記--單表的CURD 補充

動態代理 doctype bubuko 使用 rop 單表 one lse name 1.屬性名和字段名不一致 使用別名 <select id="selectAllStudents" resultType="Student"><!-- 需要

JavaEE--Mybatis學習筆記--查詢緩存

原則 主配置文件 enabled app 目錄 session共享 證明 bsp 更新 查詢緩存   查詢緩存的使用,主要是為了提高查詢訪問速度。將用戶對同一數據的重復查詢過程簡化,不再每次均從數據庫查詢獲取結果數據,從而提高訪問速度。    左為執行原理示意圖 右為執

莫煩大大TensorFlow學習筆記3----建立神經網絡

nbsp 定義數據 學習筆記 variables ati 選擇 mea 有變 plus 1、def add_layer() 添加神經網絡層: import tensorflow as tf def add_layer( inputs, in_size, out_si