我们之前已经讲过了基本的增删改查语句,现在我们来讲一下深一点的,动态sql语句。
(if、where、foreach、sql)标签使用方法:
一、if 标签
第一个举例:创建一个查询方法
我们对传入的user中的username 进行判断,判断用户名是否为空,不为空就执行后面的sql语句
运行测试方法,没有问题,数据查出来了
第二个举例:有时候啊,我们不单单要判断username,我们还要判断sex,那这个 if 标签怎么写呢,看下面,在下面再加一个 if 进行判断
运行我们的测试方法,我们查出来的数据是:名称为“ 百狗夜行 ”,性别为“ 男 ”的三个用户
二、where 标签
通过我们的前两个例子,我们发现都有 where 1 = 1,那么能不能不写呢?答案是能的,用我们的 where 标签去替换它
运行我们的测试方法,没有问题
三、foreach 标签
看一张图片
看我们的上面的图片,我们发现,这是一条带有子查询的查询语句。。那么这种带有子查询的sql语句,在我们的框架Mybatis中又该如何去写呢??这个时候就要用到 foreach 标签了
在我们的QueryVo这个类中我们创建一个集合 ids,并生成set,get方法 ,这个 ids 是用来存放 id
创建一个查询方法
接着在我们的 IUserDao.XMl 文件中就是重头戏了,直接看图了,图片已经解释很清楚了,放大看
运行我们的测试方法,没有问题
四、sql 标签
通过上面的那么多例子,我们发现一个问题,就是我们的 select * from user 查询语句用的最多,多次书写很麻烦,那怎么办?我们可以用sql标签来把它抽取出来。看图: