美文网首页IT修真院_JAVA
MyBatis的动态SQL语句

MyBatis的动态SQL语句

作者: Mastr_Yoda | 来源:发表于2018-02-03 21:55 被阅读8次

    大家好,我是IT修真院北京分院第30期的学员Mastr_Yoda,一枚正直纯洁善良的Java程序员。

    今天给大家分享一下,修真院官网Java(职业)任务2,深度思考中的知识点——MyBatis的动态SQL语句的内容。

        (1)动态语句用到的标签:if;choose(when,otherwise);trim(where,set);foreach。

        (2)if标签用来有条件选择语句,例子如下:

    当XZType不为空时,实际执行的SQL语句就变为

    select * from Student where id=#{id} AND XZType=#{XZType}

        (3)choose标签用来选择其中条件语句中的一条或者几条来执行。例子如下:

    这条SQL语句的逻辑是,当XZType、Online_No、Graduate_From这三个量,传入的值都是空时,会执行otherwise标签下的语句,当这三个量有不为null的项,则执行不为零项之下的语句。

        (4)where标签。在使用if标签的时候,如下:

    如果所有if语句的条件都不满足时,SQL语句将变成:

    SELECT * FROM BLOG WHERE

    这样会爆出SQL语法问题,为了解决这个问题,我们可以使用where标签,如下

    如果if条件都不满足,那么where标签内的所有语句将不会得到使用。

    如果if条件满足其中一个,where标签会自动给SQL语句添加WHERE关键字

    如果只有第二个if标签满足,那么where标签还会把AND这个关键字删掉。

    以上是MyBatis官网的介绍,但是我在测试的时候,发现如果两个if语句一个条件不满足,SQL语句都不会得到执行。不知道是什么原因。

        (5)trim标签。trim是自定义标签,和where等价的trim标签是,当where没有执行正确的程序时,可以使用trim标签。

        (6)set标签用在update语句中,用于动态前置SET关键字,同时消除无关的逗号。和where标签一样,set标签也可以使用trim标签等价表示。例子:

        (7)以上方法除了where标签没有实现功能外,其他的都做了demo测试通过。动态SQL语句这些内容就差不多了,以后需要用到的时候可以根据实际需求,使用合适的动态语句方法。

    提问:使用动态SQL的时候,参数的数量是不一定的,怎么传参数?

    回答:通过构造并提交pojo类来提交参数。

    今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

    修真院注册邀请码:http://www.jnshu.com/login/1/12954171

    相关文章

      网友评论

        本文标题:MyBatis的动态SQL语句

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