一、springquerymap用法
@RequestMapping("/example") public String example(@SpringQueryMap ExampleDto exampleDto) { // some code }
@SpringQueryMap注解用于将GET请求的查询参数映射到一个DTO中。它可以将查询参数映射到一个简单的POJO对象或者Map中。在使用时,Spring会将所有查询参数收集到一个Map中,然后使用Spring Converter将其转换成请求方法的参数类型。
使用@SpringQueryMap十分方便,我们在DTO中定义参数,用注解@SerializedName维护json参数名字映射即可。@SpringQueryMap也支持参数嵌套,这意味着DTO参数可以很灵活的定义,不同于其他的请求解析的注解,可以更好的满足我们的需求。
@SpringQueryMap注解被Spring扫描后,Spring将会在请求参数中自动搜索与DTO参数名相同的查询参数,Spring尝试将查询参数尽可能的转换为与Controller方法参数类型相同的变量,这些类型的变量可以是基本的类型,如int、boolean,也可以是Java中的其他复杂类型,如BigDecimal、Date等。
二、springquerymap继承问题
public class BaseDto { private long id; // 省略getter和setter } public class ExampleDto extends BaseDto { private String name; private int age; // 省略getter和setter }
@SpringQueryMap也支持继承关系,如果我们的参数定义中使用了继承,则后代DTO的参数也会被解析。这意味着我们只需要在前代DTO中定义一次参数,那么可以在后代DTO参数中继承。当然适用于@SpringQueryMap注解转换后的基本类型。它将会寻找和POJO面板中属性名相同的URL参数。
三、springquerymap注解
@SpringQueryMap注解用于将查询参数映射到controller或处理器方法的DTO、JavaBean或Map参数中。它可以解析URL参数并将其映射到JavaBean中的属性,也可以将查询参数映射到Map。如果使用Map作为目标参数,则查询参数和映射将直接转换为字符串和字符串之间的映射。
与其他的请求解析注解相比较,@SpringQueryMap注解是相当的灵活,我们可以不关心都传了哪些参数。
四、springquerymap替代
public String example(@RequestParam Map params) { String sort = (String)params.get("sort"); String order = (String)params.get("order"); // some code }
如果我们不使用@SpringQueryMap注解,我们只能使用@RequestParam来声明一个Map类型的参数,
然后从map中获取所需的参数,这样做的确简单直观,不过需要手动处理查询参数,为了确保数据的格式正确,并保留合理的代码结构,@SpringQueryMap注解显示了更好的实现,值得我们使用。
五、springquerymap注解传递时间格式
public class ExampleDto { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date startTime; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endTime; // 省略getter和setter }
@DateTimeFormat注解指定了Date类型在解析时的时间格式,也可以指定其他更方便的方式。
如果你想要使用其他时间格式,或者不是使用的Date类型的DTO,可以使用其他的解析框架,如Gson,@QueryParameter等。
六、springquerymap下划线
如果查询参数包含下划线,则可以通过使用下面的方式来进行映射。
public class ExampleDto { @SerializedName("page_number") private int pageNumber; @SerializedName("page_size") private int pageSize; // 省略getter和setter }
其中@SerializedName注解使我们可以使用特殊的名称来标识当前属性,它解析了URL参数并映射到JavaBean的属性上,也可以将查询参数映射到Map。
七、springquerymap嵌套map
public class ExampleDto { private String name; private Map properties; // 省略getter和setter }
@SpringQueryMap注解可以解析嵌套的Map参数,可以映射到Map上,也可以映射到Bean上,而@Bean上的Map属性必须是Map类型的。
在处理封装Bean时,我们也可以通过@Value注解和表达式解析来获取值。这些值将映射到表达式的目标对象上并转换为Spring支持的类型。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/246938.html