美文网首页springboot
springboot 集合mybatis 注解版,动态sql语句

springboot 集合mybatis 注解版,动态sql语句

作者: DeleteDatabase | 来源:发表于2019-07-25 10:57 被阅读0次

    大多数mybatis基本都用xml 配置。而今天再用注解版mybatis就遇到了个问题,我比如要查询一句有多条件的数据,但是该数据具体不知道是否为空,这时候我考虑到了要用动态sql语句来写。像xml有if可以来判断值是否为空,注解版该怎么处理呢?


    image.png
    @Select("<script>select id,create_time as createTime," +
                "update_time as updateTime,is_del as isDel ," +
                "phone_number as phoneNumber,password,sex,status,username" +
                " from com_admin where is_del = 0 " +
                "<if test=\"keyword !=null and keyword != ''\">and username like #{keyword}</if> " +
                "<if test=\"startTime!=null and startTime!=''\">and create_time > #{startTime}</if>" +
                "<if test=\"endTime!=null and endTime!=''\">and create_time < #{endTime}</if></script>  ")
        List<AdminAllMessage> search(String keyword, String startTime, String endTime);
    

    思考

    注解版是让我们输入一串字符串,肯定不能直接使用xml的写法

    所以我们需要<script></script>这一串标记来解决这个问题
    将自己sql语句代码输入进@select注解中就好了,你以为结束了嘛?这时候就会遇到了bug了
    由于在这个script中不能在使用< ,>, <>符号,所以用这些符号的都会报错。那该怎么办?

    image.png
    @Select("<script>select id,create_time as createTime," +
                "update_time as updateTime,is_del as isDel ," +
                "phone_number as phoneNumber,password,sex,status,username" +
                " from com_admin where is_del = 0 " +
                "<if test=\"keyword !=null and keyword != ''\">and username like #{keyword}</if> " +
                "<if test=\"startTime!=null and startTime!=''\">and create_time &gt; #{startTime}</if>" +
                "<if test=\"endTime!=null and endTime!=''\">and create_time &lt; #{endTime}</if></script>  ")
        List<AdminAllMessage> search(String keyword, String startTime, String endTime);
    

    通过& lt; & gt;符号来解决 <,>无法使用的问题。这时候你就可以快乐的写注解了

    相关文章

      网友评论

        本文标题:springboot 集合mybatis 注解版,动态sql语句

        本文链接:https://www.haomeiwen.com/subject/nopcrctx.html