发表于: 2018-01-31 00:08:25
1 549
今天完成:
1—今天讲小课堂,讲的是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语句这些内容就差不多了,以后需要用到的时候可以根据实际需求,使用合适的动态语句方法。
明天计划:
明天继续完成任务二的剩余内容。其中网页上的增删改查已经实现,需要做的是理解网页与后端传值的具体过程和postman测试方法。
遇到的问题:
今天遇到的问题就是where标签的SQL动态语句没有实现,完全按照官网的内容进行操作,但是没有实现。不知道原因。
收获:
对动态SQL方法有了大概了解。
评论