.html
1数据准备2if标签3choose标签4trim(set、where)5foreach标签6bind标签7代码MyBatis令人喜欢的一大特性就是动态SQL。在使用JDBC的过程中,根据条件进行SQL的拼接是很麻烦且很容易出错的。MyBatis动态SQL的出现,解决了这个麻烦。
MyBatis通过OGNL来进行动态SQL的使用的。目前,动态SQL支持以下几种标签:
1数据准备为了后面的演示,创建了一个Maven项目mybatis-dynamic,创建了对应的数据库和表
DROPTABLEIFEXISTS`student`;CREATETABLE`student`(`student_id`int(10)unsignedNOTNULLAUTO_INCREMENTCOMMENT编号,`name`varchar(20)DEFAULTNULLCOMMENT姓名,`phone`varchar(20)DEFAULTNULLCOMMENT电话,`email`varchar(50)DEFAULTNULLCOMMENT邮箱,`sex`tinyint(4)DEFAULTNULLCOMMENT性别,`locked`tinyint(4)DEFAULTNULLCOMMENT状态(0:正常,1:锁定),`gmt_created`datetimeDEFAULTCURRENT_TIMESTAMPCOMMENT存入数据库的时间,`gmt_modified`datetimeDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT修改的时间,`delete`int(11)DEFAULTNULL,PRIMARYKEY(`student_id`))ENGINE=InnoDBAUTO_INCREMENT=7DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4__ai_ciCOMMENT=学生表;
对应的项目结构
2if标签if标签是我们最常使用的。在查询、删除、更新的时候很可能会使用到。必须结合test属性联合使用。
2.1在WHERE条件中使用if标签这是常见的一种现象,我们在进行按条件查询的时候,可能会有多种情况。
2.1.1查询条件根据输入的学生信息进行条件检索
当只输入用户名时,使用用户名进行模糊检索;当只输入性别时,使用性别进行完全匹配当用户名和性别都存在时,用这两个条件进行查询匹配查询2.1.2动态SQL接口函数
/***根据输入的学生信息进行条件检索*1.当只输入用户名时,使用用户名进行模糊检索;*2.当只输入邮箱时,使用性别进行完全匹配*3.当用户名和性别都存在时,用这两个条件进行查询匹配的用*
paramstudent*return*/ListStudentselectByStudentSelective(Studentstudent);对应的动态SQL
selectid="selectByStudentSelective"resultMap="BaseResultMap"parameterType="