内容正文:
第4章动态SQL和注解
·动态SQL
·注解
4.1动态SQL
4.1.1
动态SQL简介
4.1.2
<if>元素
4.1.3
<choose>、<when>和<otherwise>元素
目录
4.1.4
<where>元素
Contents
4.1.5
<set>元素
4.1.6
<trim>元素
4.1.7
<foreach>元素
4.1.8
<bind>元素
初心至善匠心育人
4.1动态SQL
4.1.1动态SQL简介
·动态SQL是MyBatis提供的拼接SQL语句的强大机制。在MyBatis的映射文件中,
开发人员可通过动态SQL元素灵活组装SQL语句,这在很大程度上避免了单一SQL
语句的反复堆砌,提高了SQL语句的复用性。
·MyBatis提供了一系列的动态SQL元素,其中常用的元素如表所示。
设置参数
洲违
方于判当语,常用于单条牛分支神断
chocs (when utherwisel
期当于判断语的,膏用于多条件分支州解
trim (where,set)
精助心素,时于处理一些持菜何题
foreach
有当于描坏语复,在口语句等列举素件时常对
·表中列举出了常用的动态SQL元素,每个元素分别实现不同的功能,接下来,本书
将对这些元素作详细讲解。
4.1动态SQL
4.1.2<if>元素
·<if>元素主要用于条件判断,它类似于Java代码中的if语句,通常与test属性联合
使用。
·在实际开发中,<if>元素的任务是根据需求动态控制where子句的内容。例如,
现有一张学生表,程序可通过学生姓名、年龄、科目等字段查询学生信息,如果
将科目作为非必选的查询条件,满足既可以通过姓名和科目查询学生信息,又可
以直接通过姓名查询学生信息,此时需要使用到<if>元素。
·接下来,本节通过以上实例演示<if>元素的使用。
4.1动态SQL
4.1.2<if>元素
·1.数据准备
(1)在数据库chapter(04中创建数据表student,该表用于映射学生信息,SQL语
句如下所示。
1月DROP DATAILASE EF☑5T5 hapterO4:
2 CFZATE DATABASE chapter0
3 Ugs chapter0di
581 d thr PR14 ARY KEY AU70T0CRE信wT,卡1E
anann VA口两R20),,学车鲜老
AgeV030成(201,t学生0#
B COuESG VARCHA版12)#科U
93
(2)向数据表student中插入数据,SQL语句如下所示。
之T5术RT1 NTO stadent1nam,a98,ou7e)yUF51t“,'21',Jwva':
3 ISSERT INT0 todent【snane,4ge,course)WEs('工181“,'20','Python'11
INSERT IKTO stodent (snane,age,course)VALUES ('MangMu',19,Java')
4.1动态SQL
4.1.2<if>元素
,(3)通过SQL语句测试数据是否插入成功,执行结果如下所示」
nysgl>select*fran student
sid snare
Hge
COUPSO
1 ZhangSen
0
Java
2L1S1
21
Java
311151
20
Pythom
4 Bangu
10
rows in set (0.00 sec)
·从以上执行结果可以看出,数据插入成功。此处需要提醒大家的是,数据表
student中插入了两条sname字段均为LiSi的学生信息,但它们的其他字段值不同。
·2.创健工程
·在Eclipse中新建Web工程chapter044,将MyBatis的驱动jar包
(mybatis-3.4.6.jar和lib目录下的jar包)复制到lib目录下,完成jar包的导入。
4.1动态SQL
4.1.2<if>元素
·3.创健PoO类
在工程chapter04的src目录下创建com.qfedu.pojo包,在com.qfedu.pojo包下
创建POO类Student,该类的代码与本书第1章中的例1-1所示代码相同,此处不
再重复列出。
·4.创健配置文件
在src目录下新建配置文件nybatis-config.xml,该文件的代码与第3章例3-5所示
代码大致相同,由于要连接的数据库发生变化,此处需要将数据库名称修改为
chapter04,要修改的代码如下所示。
除此之外,由于映射文件发生变化,需要修改<mappers>元素的内容,要修改的
代码如下。
5PF号F8
<napper resource-"con/qfedu/mapper/8tudentHspper,xnl"/>
4.1动态SQL
4.1