当我们在写动态sql语句的时候有的时候可能有的需求在sql里面做判断会更方便一些的时候这个时候我们就要用到if标签了
我们在使用if标签的时候会遇到一些问题,比如我明明判断逻辑是正确的可是就是没有办法生成自己想要的sql
例子:
我要根据mapper层传来一个String类型参数status判断查询的数据是升序还是降序
<select id="sortList" parameterType="java.lang.String" resultMap="User">
select B.user_name, A.loackCount
from user_project A left join sys_user B on A.userId = B.user_id
<if test="status == '1'">
ORDER BY A.loackCount DESC
</if>
<if test="status == '2'">
ORDER BY A.loackCount ASC
</if>
</select>
以上的写法会出现在生成SQL的时候无法正确的根据判断生成相应需要的sql
正确的写法是将双引号放在里面,单引号放在外面就解决了这个问题,如下
<select id="sortList" parameterType="java.lang.String" resultMap="User">
select B.user_name, A.loackCount
from user_project A left join sys_user B on A.userId = B.user_id
<if test='status == "1"'>
ORDER BY A.loackCount DESC
</if>
<if test='status == "2"'>
ORDER BY A.loackCount ASC
</if>
</select>
具体的原因我还不知道,但是如果有大佬知道为什么的话欢迎评论区告知,万分感谢
框架使用的是mybatis