MyBaits的Mapper映射文件中常见的标签及作用

111 阅读2分钟

1. <if></if>标签

用于基本的条件判断。必填属性test="",双引号的测试结果为true或false,只有test的结果为true才会拼接if标签中的sql,如果有多个测试条件可以用 and 或者 or连接

示例:

image.png

2.<foreach></foreach>标签

foreach标签可以对数组, Map或者实现了Iterable接口的集合进行遍历, 数组在处理时自动转化为List对象, 因此foreach标签的遍历分为两大类:Iterable 和 Map。 属性:

  1. collection 值为要循环对象的名称,一般由@Param("")来指定。
  2. item 变量名,代表循环对象中取出的每一个值。若为Map,item代表的值是键值对的值,而不是整个键值对
  3. index 索引的属性名(集合为当前索引值,Map则为key)
  4. open 整个循环开头的字符串
  5. close 整个循环结束的字符串
  6. separator 每次循环的分隔符

示例:

image.png

image.png

3.<where></where>标签

多配合if标签使用,能够去除多余的and使sql能够正确编译,替代不怎么美观的1=1。

示例:

image.png

4.<choose></choose>标签

相当于java中的if-else,与<when></when>标签<otherwise></otherwise>标签搭配使用。有时候并不想应用所有的条件,而只是想从多个选项中选择一个。choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。

5.<set></set>标签

更新时自动拼接set,并去除多余逗号

6.<select></select>标签

用于映射sql的select操作。

属性:

  1. useGeneratedKeys 是否开启主键回显
  2. keyProperty 指定回显的主键值,映射到传入实体参数的字段名

示例:

image.png

7.复用sql的标签

  1. <sql id =""></sql>指定要复用的sql语句块。
  2. <include refid = ""/>指定引入的sql的语句块