mybatis的mapper中的if條件比對map參數中的值失敗


請教個問題,在mapper中的動態sql中<if test="#{loginUser.user_id} == 'wangty55'.toString()">比對失敗,其中傳的值絕對是正確的,是不是寫發有問題,以下是具體的代碼:

<select id="select_cust_product_all" parameterType="Map" resultMap="select_cust_product_all_map">
SELECT
c.*, d.product_status
FROM
(
SELECT
a.cust_id,
a.cust_name,
a.lt_manager_name,
a.department_name,
b.product_id,
b.industry_id
FROM
t_sj_cust a,
t_sj_industry_product b
WHERE
a.industry_id = #{industry_id}
AND b.industry_id IN (#{industry_id}, '12')
<if test="#{loginUser.user_id} == 'wangty55'.toString()">
AND a.lt_manager_id = 'wangty55'</if>
) c
LEFT JOIN t_sj_cust_product_status d ON c.cust_id = d.cust_id
AND c.product_id = d.product_id
</select>

6 个解决方案

#1


改成<if test="loginUser.user_id == 'wangty55'.toString()">就好用了,還是對參數的理解不到位,什么時候該加#{},什么什么該加${},什么時候不加,分的也不是很清楚

#2


if test 里面直接取值, 不用寫 ${ }   或  #{}

#3


 #都會當成字符串,$直接顯示(字符串就是字符串。。。)

#4


 'wangty55'

我沒看錯的話,你這個是 單引號,JAVA里面單引號,指這個是 char,說白了 就是會牆磚成int,你再.toString()你覺得它會變成 "wangty55"嗎

#5


話說你為何這里還要toString,直接來個"wangty55"不就好了嘛, 而且字符串比較你用 == 不應該是有eq嘛

#6


試一下外邊用單引號,里面用雙引號看看‘  "" ’

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com