所遇之坑" /> 所遇之坑 - 程序员文章站" />
欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mybatis 注解 动态sql所遇之坑

程序员文章站 2022-03-24 12:36:36
...

         相信很多同学很少遇见这种,也很少用到这种,因为这种写法有点恶心。但是遇到了就要解决啊,网上搜了一堆,都是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。