MyBatis动态SQL使用,传入参数Map中的Key判断

376 阅读1分钟

当使用Map作为参数时,可以用_parameter.containsKey(变量名)来判断map中是否包含有些变量:


<select id="" parameterType="Map"   resultMap="commodityResultMap" >
        SELECT c.id c_id,c.variety_id,c.nickName c_nickName,c.description c_description,c.ordinaryPrice c_ordinaryPrice,c.memberPrice c_memberPrice,c.path c_path,v.id v_id,v.nickName v_nickName 
        FROM commodity c 
        INNER JOIN variety v 
        ON c.variety_id=v.id 
        where 1=1  
        
             <!-- _parameter.containsKey('键') 作用:判断键是否存在返回值boolean  #{键}取对应的值   !必须三处键值对应,否则取不到值-->
             <if test="_parameter.containsKey('varietyID')"> 
                and v.id=#{varietyID}
             </if>
    </select>

<!-- 动态更新-->
   	<update id="updateBook" parameterType="map">
   		update book
   		
   		<trim prefix="set" suffixOverrides=",">
   			<if test="_parameter.containsKey('bookName')">
   				book_name=#{bookName},
   			</if>
   			<if test="_parameter.containsKey('bookPrice')">
   				book_price=#{bookPrice},
   			</if>
   			<if test="_parameter.containsKey('bookPage')">
   				book_page=#{bookPage}
   			</if>
   		</trim>
   		where id=#{id}
   	</update>