springboot

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

2019-07-25  本文已影响0人  DeleteDatabase

大多数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;符号来解决 <,>无法使用的问题。这时候你就可以快乐的写注解了

上一篇下一篇

猜你喜欢

热点阅读