【mybatis】mapper中SQL语句关于大小比较的转义 青旅半醒 2021-06-24 15:58 540阅读 0赞 最近在写mybatis中的sql的时候碰到了一些问题,就是关于时间格式的比较,相信大家在mybatis中写sql的时候也遇到过这些问题,现在来总结一下这些问题。 我们通常在写一些sql的时候可能会碰到一些逻辑是比较大小的,比如查找价格高于200元的商品,这个时候我们要怎么写呢? 很简单,也就是:select \* from goods where price>200 . 这样的句子在我们写的一般的sql里面就可以使用了 **但是!!!** 我们要知道,mybatis的mapper文件就是xml类型的,并且xml文件自带的标签正好里面是用‘<’和‘>’来进行区分的,所以这个xml文件在进行解析的时候,如果我们的sql语句中带着‘<’或‘>’的话会有概率解析错误,这个就和我们在html中如果想要在页面上输出一个反斜杠,直接输出是不能输出是一个道理。 所以,这里在xml文件中和在HTML文件中一样,用到了字符串的转义,来让我们的解析器解析到xml中的大于小于号,以下为常用的转义类型: <table> <tbody> <tr> <td>符号</td> <td>转义符</td> <td>转义码</td> <td>中文</td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)"><</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&lt; </span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#60; </span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">小于号</span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">></span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&gt;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#62; </span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">大于号</span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">≤</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&le;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#8804;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">小于等于号</span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">≥</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&ge;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#8805;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">大于等于号</span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">"</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&quot;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#34; </span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">引号</span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">“</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&ldquo;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#147;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">左双引号</span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">”</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&rdquo;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#148;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">右双引号 </span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">‘</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&lsquo; </span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#145;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">做单引号</span></td> </tr> <tr> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">’</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&rsquo;</span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">&#146; </span></td> <td><span style="color:rgb(17,17,17); font-size:18px; white-space:pre-wrap; background-color:rgb(255,255,255)">右单引号</span></td> </tr> </tbody> </table> 上面的sql就可以写成: select \* from goods where price > 200 然后说到sql就不得不提到里面的函数了,只是拿我们的来举例子,现在我才知道可以对于要查找的参数进行函数处理: substr(early_sell_start_time,1,10) = #{nowDate} 这句话的意思就是把字段 early\_sell\_start\_time 的数据从第一个开始截取10为与参数比较,然后查询结果。
还没有评论,来说两句吧...