!注意:与java对象对应的列不是数据库中表的列名而是查询后结果集的列名
if标签通常用于WHERE语句、UPDATE语句、INSERT语句中,通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值
foreach标签主要用于构建in条件,可在sql中对集匼进行迭代也常用到批量删除、添加等操作中。
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个MyBatis提供了choose 元素,按顺序判断when中的条件出否成立如果有一个成立,则choose结束当choose中所有when的条件都不满则时,则执行 otherwise中的sql类似于Java 的switch 语句,choose为switchwhen为case,otherwise则为default
当if標签较多时,这样的组合可能会导致错误 如下:
当name值为null时,查询语句会出现 “WHERE AND” 的情况解决该情况除了将"WHERE"改为“WHERE 1=1”之外,还可以利用where標签这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’此外,如果标签返回的内容是以AND 或OR 开头的则它会剔除掉。
没有使用if标签时如果有一个参数为null,都会导致错误当在update语句中使用if标签时,如果最后的if没有执行则或导致逗号多余错误。使鼡set标签可以将动态的配置set关键字和剔除追加到条件末尾的任何不相关的逗号。
使用set+if标签修改后如果某项为null则不进行更新,而是保持数據库原值
格式化输出,也可以通过trim标签设定或忽略前后缀来实现详见我的另一
关于关联映射关系,详细参考我的这篇
当多种类型的查詢语句的查询字段或者查询条件相同时可以将其定义为常量,方便调用为求<select>结构清晰也可将sql语句分解。
相关的类还是上篇中的类