對百度的某些文章深惡痛絕, 只是ctrl+c和ctrl+v。並且還不能解決問題。
昨天實現一個功能,根據文章的id或者別名查找文章。
起初采用mybatis的Example進行查詢,對參數artName進行判斷,如果是純數字就byId查詢,否則就by別名。由於查詢文章的同時,需要關聯查詢文章分類標簽,所以選擇采用select語句映射的方式查詢,但又不想寫兩個查詢方法,就使用了mybatis中動態sql。
/**
* 查詢文章
* @param artName id 或 別名
* @param byId 如果是 true 則按照id查詢
* 否則 按照別名查詢
* @return
*/
public Article selectByArtName(@Param(value = "artName") String artName,
@Param(value = "byId") Boolean byId);
mapper中定義了一個方法,有artName和byId兩個參數,artName 表示id 或 別名,byId表示是否通過id查詢。
對byId Boolean值進行判斷時,出現false值無效的情況,在百度了一圈發現,普遍采用
<if test="byId != null">
a.id = #{artName}
</if>
這種方式,當byId=true時正常執行,但為false時不生效。后采用標簽
<choose>
<when test="byId">
a.id = #{artName}
</when>
<otherwise>
a.alias = #{artName}
</otherwise>
</choose>
byId本身是bool值,不用進行判斷。
注意: byId不用加#{},不然false也會無效,如果加了#{}, 在與其他值進行比較時,
如:#{byId} == true 會報空指針錯誤,如果寫成#{byId} == ‘true’ 會報Linkhashmap無法轉換成String類型錯誤。
————————————————
版權聲明:本文為CSDN博主「歐陽豐」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lonely_bin/article/details/98751584