mybatis注解sql使用判断if踩坑

mybatis使用注解SQL语句的方式 在增删改查时还是很方便的

但是复杂SQL多了之后就不太友好了

我这里写了一个多表的SQL 废了好半天的劲才改出来

先给大家看错误的语句
怎么调都不好用 就是报错 后来我看了好多文章

@Select("<script>" +"select u.*,z.dname,group_concat(r.name) rnames" +
           "from user u " +
           "left join ztree z on u.bid = z.id" +
           "left join tsturole m on u.id = m.sid" +
           "left join trole r on m.rid = r.id" +
           "where 1=1" +
           "<if test='bid!= null and bid!='' '>and u.bid=#{bid} </if>" +
           "<if test='condition !=null and condition != '' ' >and ${condition} = #{content}</if>" +
           "group by username" +
           "</script>")
    List<User> queryStudents(@Param("bid") String bid,@Param("condition")String condition ,@Param("content") String content);

发现 SQL之要加上换行 不然SQL会连在一起 相信大家 在控制台也看的到 但是if语句怎么都不好用 后来才知道 <script>标签中间的语句 ""空字符串等要写成转义字符的形式不然会报错 希望大家有特殊字符时不要踩坑!!!!!

@Select("<script>" +"select u.*,z.dname,group_concat(r.name) rnames\n" +
           "from user u " +
           "left join ztree z on u.bid = z.id\n" +
           "left join tsturole m on u.id = m.sid\n" +
           "left join trole r on m.rid = r.id\n" +
           "where 1=1" +
           "<if test='bid!= null and bid!=\"\" '>and u.bid=#{bid} </if>" +
           "<if test='condition !=null and condition != \"\" ' >and ${condition} = #{content}</if>" +
           "group by username" +
           "</script>")
    List<User> queryStudents(@Param("bid") String bid,@Param("condition")String condition ,@Param("content") String content);
    需要转义的字符
    &lt;       < 
    &gt;       >  
    &lt;&gt;   <>
    &amp;      & 
    &apos;      '
    &quot;      "

最后 :我的语句写的可能不太规范 还需要改进 希望大家好好学学SQL 不要像小编一样 !!! o(╥﹏╥)o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值