mybatis 註解 動態sql 所遇之坑
相信很多同學很少遇見這種,也很少用到這種,因為這種寫法有點噁心。但是遇到了就要解決啊,網上搜了一堆,都是int,不知道是有意還是無意的,例子如下:
@Select("<script>" + "select a.* from pub_info a where a.company_id=#{companyId} and a.type_id=#{typeId} and a.status=1 order by a.createtime desc " + "<if test='num>0'>" + "limit 0,#{num}" + "</if>" + "</script>")
public List<T> custom(@Param("companyId")Long companyId,@Param("typeId")Integer typeId,@Param("num")Integer num);
這樣寫是完成沒問題的,但是,但是,但是,重要的事情說三遍,如果欄位型別是string了怎麼辦。為什麼說這種寫法噁心,就源於字串裡面拼xml,相信大家被xml裡的很多特殊字元坑過,這裡就不多說了,直接上正確寫法:
@Select("<script>" + "select a.* from pub_info a where a.company_id=#{companyId} and a.status=1 order by a.createtime desc " + "<if test='dbtype!=\"mysql\"'>" + "limit 0,#{num}" + "</if>" + "</script>")
public List<T> custom(@Param("companyId")Long companyId,@Param("dbtype")String dbtype,@Param("num")Integer num);
Ps:test裡面的字串的雙引號要轉義,不要想著用單引號,我試過了,錯的。。。
好了就給大家分享到這裡。gl。