3.5 @MatrixVariable注解

3.5 @MatrixVariable注解

作用:多条件组合查询

org.springframework.web.bind.annotation.MatrixVariable注解拓展了URL请求地址的功能。使用@Matrixvariable注解时多个变量可以使用;(分号)分隔,该注解允许开发者进行多条件组合査询。

属性

使用@MatrixVariable注解可指定如下表所示的属性。

属性 类型 是否必要 说明
name String 指定请求参数绑定的名称,如果省略则绑定同名参数
value String name属性的别名
pathVar String matrix variable所在路径的url path变量的名称
required boolean 指示参数是否必须绑定
defaultValue String 如果没有传递参数而使用的默认值

示例代码

@MatrixVariable注解示例代码如下:

1
2
3
4
5
6
7
8
9
// 该方法映射的请求为/VariableTest/matrixVariableTest/1;name=jack;age=23
@GetMapping(value = "/matrixVariableTest/{userId}")
public void matrixVariableTest(@PathVariable Integer userId,
@MatrixVariable(value = "name", pathVar = "userId") String name,
@MatrixVariable(value = "age", pathVar = "userId") Integer age)
{
System.out.println("通过@PathVariable获得数据: userId=" + userId);
System.out.println("通过@MatrixVariable获得数据: name=" + name + " age=" + age);
}

假如请求的URLhttp://localhost:8080/VariableTest/MatrixVariableTest/1;name=jack;age=23,

  • 则自动将URL中模板变量{userId}绑定到通过@Pathvariable注解的同名形式参数上,即方法的形式参数userId将被赋值为1;
  • 通过@MatrixVariable注解绑定了形式参数nameage,即形式参数name将被赋值为jack,形式参数age将被赋值为23

启用@MatrixVariable注解功能

需要注意的是,@MatrixVariable注解功能在Spring MVC中默认是不启用的,启用它需要在Spring MVC配置文件的mvc:annotation-driven标签上设置enable-matrix-variables="true属性,示例代码如下:

1
2
3
4
5
<!-- 默认装配方案 -->
<!-- @MatrixVariable注解功能在SpringMVC中默认是不启用的 -->
<!-- 启用它需要设置enable-matrix-variables="true" -->
<mvc:annotation-driven
enable-matrix-variables="true" />