mybatis中 where 1 = 1和動態標籤

mybatis中 where 1 = 1和動態標籤where

比如下面這段代碼:

	<select id="getTotal" parameterType="Map" resultType="Integer">
		select count(*) from menu where 1 = 1 
		<if test="parentId != null">
				and parentId like #{parentId} 
			</if>
			<if test="name != null">
				and name like '%${name}%'
			</if>
	</select>

當一條查詢語句有多個if時,就需要用到where 1 = 1 連接if接下去的語句


但是我們有另一種寫法,那就是用到動態where
代碼如下

	<select id="getTotal" parameterType="Map" resultType="Integer">
		select count(*) from menu 
		<where>
		<if test="parentId != null">
				and parentId like #{parentId} 
			</if>
			<if test="name != null">
				and name like '%${name}%'
			</if>
			</where>
	</select>

沒錯,就是在if外面一層加上where標籤,它會自動的將第一個and忽略掉,並且在該用到where的時候自動添加where


當然如果select之後一直一個時 我們也可以這麼寫

	<select id="getTotal" parameterType="Map" resultType="Integer">
		select count(*) from menu  
		<if test="parentId != null">
				where parentId like #{parentId} 
		</if>
	</select>

直接加上where 也是一樣的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章