框架学习系列 mybatis 第十四篇 mybatis动态sql一

来源:互联网 发布:淘宝宝贝详情模板下载 编辑:程序博客网 时间:2024/06/01 08:28

本节主要内容

1:动态sql使用(wher标签、if标签、set标签的使用)

2:总结

本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十四篇 mybatis动态sql一

声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!

一:动态sql的使用。

1.1:什么是动态sql?为什么需要使用到动态sql?

在mybatis中,提供了一些动态的sql标签。比如动态的去判断字段如果没值就不添加到where语句中

使用动态sql标签可以让程序员更快的进行mybatis的开发。

动态sql还可以提高sql的可复用性

1.2:常用的sql标签有哪些?

if标签、where标签、set标签、trim标签、sql片段、foreach标签等

1.2.1:if/where标签的使用

需求:有时候我们查询的条件是多个,比如查询条件为用户名和性别但是这两个条件都可以为空。那么这样的情况下mybatis中怎么实现呢?这里就可以使用where和if标签了。

先看不加判断的sql语句怎么写?

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

我们看到where和and。也就是说,当username和sex都有值的时候 使用where和and

那如果只有sex怎么办?或者只有username怎么办?这种情况下,上面语句就会出问题了。

所以,可以使用where标签和if标签。

小二,先上截图,给大爷们看看,然后咱们在讲解。

在Mapper-User.xml文件中:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

说明:

<where>:声明where标签开始

</where>:表示where标签结束

<if>:if标签开始

test:是判断的表达式。

注意,在表达式中并且是用字母and而非使用&符号

字符串判断双引号套单引号使用

</if>:if标签结束

说明:

where标签会自动判断前面是否有字段,如果有字段会使用and sex=${sex}这个语句。

如果没有字段,and会被忽略直接跟在where后面。

也就是说,如果username为空但是sex不为空的话。输入的sql又是什么?

测试类:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

控制台输出的sql:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

可以看到,and直接被忽略掉了。

1.2.2:set标签

set标签一般使用再update语句配合if标签使用,比如我们根据id更新用户名和性别先看正常的sql语句:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

我们看到,在set username和sex中间有逗号的。假如,username为空,经过if标签过滤之后,那么上面的sql语句就变成了 updae user set , sex=${sex} where id=${id]。这个sql语句就不能正确执行。所以解决这个问题,可以使用set和if标签配合使用。

先看mapper-User.xml文件怎么写:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

说明:

需要注意的是:这里使用了${}如果数据类型为string类型的,需要添加单引号。

(ps:还记得mybaits中${}和#{}之间的区别吗?如果忘记了,可以回看《框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询》这篇文章,在文章最后总结处有写到${}和#{}的区别)

先看更新之前数据库数据:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

现在只是更新id为28的用户名为:“凯哥官网”

测试代码:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

执行结果:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

在查看数据库:

框架学习系列 mybatis 第十四篇 mybatis动态sql一

框架学习系列 mybatis 第十四篇 mybatis动态sql一

二:总结

通过本文学习,我们需要掌握的

1:where 、if标签的结合使用。这个在公司中很常用的

2:set、if标签的使用

原创粉丝点击