天天看點

mysql空字元串問題

今天寫項目的修改功能的時候遇到個很奇怪的問題,前端寫的select兩個選項,一個值是true,另一個是false:

<select class="form-control col-md-4" id="order_finished" name="complete">
    <option value="true">是</option>
    <option value="false">否</option>
</select>
           

修改的時候從否選是時可以成功修改,但是選否的時候缺沒有修改回來。

檢視資料庫之後發現沒有得到值,但是後端得到了,于是就看了看mapper裡面修改語句,發現自己這樣寫的:

<update id="editBill" parameterType="bill">
update bill
<set>
<if test="giveUserID!='' and giveUserID!=null">giveUserID=#{giveUserID},</if>
<if test="acceptUserID!=null and acceptUserID!=''">acceptUserID=#{acceptUserID},</if>
<if test="trainnumber!=null and trainnumber!=''">trainnumber=#{trainnumber},</if>
<if test="cost!=null and cost!=''">cost=#{cost},</if>
<if test="complete!=null and complete!=''">complete=#{complete}</if>
</set>
where trackingID = #{trackingID}
</update>
           

一開始complete!=’‘是為了不讓修改時填入空字元串,然後嘗試去除了一下,成功修改了,嘗試了一下發現對mysql來說0、false、空字元串是一樣的值,是以在判斷complete!=’'時直接被攔住了。

目前想到的解決方法是前端加限制,然後後端判斷是否為空字元串。

另外要提一點是bool型在mysql中會轉化成tinyint(1)型,0為false,1為true,後端可以用布爾型得到值用布爾型插入,也可以用int取值放值。

繼續閱讀