java中xml文件标签中注释规范问题之mybatis执行sql语句的影响

我们在使用mybatis框架执行sql语句进行数据库操作时,会在xxxMapper.xml映射文件下进行sql标签语句执行。

如下当我们在idea中自动注释 对于其中一个为空  的语句,一般我们在idea中按下ctrl+/来自动注释 但是虽然是注释
 

 <!--if和where-->
    <select id="findUserList" parameterType="per.yyt.vo.UserQueryVo" resultType="per.yyt.model.User">
        select * from user
        <where>

            <if test="user != null ">
                <if test="user.sex !=null and user.sex !=''">
                    sex=#{user.sex}
                </if>
--                 对于其中一个为空
                <if test="user.username !=null and user.username !=''">
                  AND username like '%${user.username}%'
                </if>

            </if>
        </where>
    </select>

问题:

但是由于执行动态sql语句时:

  • If标签:作为判断入参来使用的,如果符合条件,则把if标签体内的SQL拼接上。

      注意:用if进行判断是否为空时,不仅要判断null,也要判断空字符串‘’;

  • Where标签:会去掉条件中的第一个and符号。

但如果我们这样在标签中进行了注释 则系统无法自动把and去除 所以sql语句就无法执行成功,因为其执行的是如下语句

### SQL: select * from user          WHERE --                 对于其中一个为空                                    AND username like '%明%'

这样就没有去除and这个符号

解决:

所以我们在xml注释时 为了规范所以都写成:

<!--注释内容-->

以防不小心吭吭啦

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值