當前位置:首頁 » 編程語言 » mybatis動態sql遍歷map
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mybatis動態sql遍歷map

發布時間: 2023-03-08 20:01:48

㈠ mybatis 查詢 動態sql語句怎麼寫

mybatis的sql和你在資料庫客戶端執行的sql是一樣的,但是在mybatis中調用的sql一般都是動態的,所以用到了參數傳遞。這個mybatis有對應的標簽以及相應的變數來實現。你可以搜索下mybatis標簽。同時給你一個參考的你看看,這個是一個查詢用戶的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

<select id="queryUsers" parameterType="map" resultType="xx.xx.xx.bean.UserBean">
<![CDATA[
select
ID,
LOGIN_NAME AS loginName,
PASSWORD,
REAL_NAME AS realName,
POSITION,
(SELECT D.POSITION_NAME FROM UNIT_POSITION D WHERE D.POSITION_CODE=T.POSITION) POSITIONNAME,
USER_TYPE AS userType,
SEX,
PID,
TO_CHAR(T.BIRTHDAY,'YYYY-MM-DD') BIRTHDAY,
EMAIL,
CONTACT_TEL AS contactTel,
CONTACT_MOBILE AS contactMobile,
CONTACT_FAX AS contactFax,
CONTACT_ZIP AS contactZip,
CONTACT_ADDR AS contactAddr,
STATUS,
EDUCATION,
(SELECT D.EDUCATION_NAME FROM UNIT_EDUCATION D WHERE D.EDUCATION_CODE=T.EDUCATION AND D.STATUS=0) EDUCATIONNAME,
NATION,
POLITICAL,
REMARK,
TO_CHAR(T.CREATE_DATE,'YYYY-MM-DD HH24:MI:SS') createDate,
(SELECT D.REAL_NAME FROM UNIT_USER D WHERE D.ID= T.CREATE_USER_ID) createUserId,
TO_CHAR(T.UPDATE_DATE,'YYYY-MM-DD HH24:MI:SS') updateDate,
(SELECT D.REAL_NAME FROM UNIT_USER D WHERE D.ID= T.UPDATE_USER_ID) updateUserId
from UNIT_USER T
]]>
<where>
T.STATUS='1'
<if test="realName !=null and realName !=''">
and T.REAL_NAME like '%${realName}%'
</if>
<if test="nexusDpartment !=null">
AND T.ID IN (SELECT DISTINCT D.USER_ID FROM UNIT_USER_DEPT D WHERE D.DEPT_CODE IN (${nexusDpartment}))
</if>
<if test="deptCode !=null and deptCode !=''">
AND T.ID IN (SELECT DISTINCT D.USER_ID FROM UNIT_USER_DEPT D WHERE D.DEPT_CODE = #{deptCode})
</if>
</where>
<if test="sort != null and sort != ''">
order by ${sort}
<if test="direction != null and direction != ''">
${direction}
</if>
</if>
</select>

㈡ MyBatis高級篇 - 動態SQL

MyBatis提供了一套動態SQL標簽,協助我們完成 SQL 語句的拼接工作。我們在日常工作中經常需要對 SQL 進行拼接:入參循環遍歷, where 條件拼接時的分隔符處理等等。
本文介紹以下幾個較常用的動態SQL標簽:

我們經常會遇到 where 條件中需要根據是否傳入參數來確定是否添加條件。

為了解決上面所遇到的問題,MyBatis 為我們提供了 <where> 標簽。

<foreach> 用於遍歷輸入參數中集合對象。

我們的 Mapper 文件,在 select 或者是 where 經常會出現重復內容,我們可以把重復的內容抽取為一個 <sql> 片段,需要使用的地方,使用 <include> 標簽就可以引入進來。

㈢ MyBatis中動態sql語句foreach用法

<foreach collection="array" item="item" separator="," >
#{item}
</foreach>

#{item}為數組遍歷的元素

其他的就按sql添加語法寫

㈣ mybatis-puls動態sql表自動不確定

mybatis-puls動態sql表自動不確定,MyBatis中的動態SQL,實現不確定條件的CRUD的實現,將查詢條件封裝到map裡面,通過 if 和 where 標簽的使用,實現sql的動態性。
以前都是指定了實體類,然後寫好sql語句直接套用就可以了。但是現在有個問題,萬一你的物理模型不確定,也即是你的表結構不確定,甚至連表名字都不確定該怎麼辦呢?我這次遇到了這個問題。我們有個需求,事先定義好了很多數據集的信息模型,針對這些信息模型生成物理模型。而我們需要針對這些物理模型進行操作。而這些數據集一旦更新,信息模型以及物理模型都要變動,所以事先不可能完全確定物理表結構等等信息。
mybatis中一個屬性:statementType。這個屬性的作用是告訴mybatis我們寫的這個sql到底是預編譯(PRESTATEMENT)還是非預編譯(STATEMENT)的。區別是如果是預編譯的,那麼系統在初始化時就會讀取這段sql代碼,將指定的實體類中的欄位替換了類似#{}這樣的語句。