springboot @RequestBody接收json参数遇到的小坑

接口开发一般都是以json数据作为双方系统数据传递,因此controller一般加上@RestController注解。

如果系统直接传递参数过多,通常是以一个打的json对象传过来,对应这个json对象,接收方需要定义与json对象结构一致的类来接收,这就需要@RequestBody标记,它能把json字符串自动转换为java对象。

例如代码:

@ResponseBody
@RequestMapping(value = "/genBusiness",
            method = RequestMethod.POST)
public PublicFundAnswerDTO genMortBusinessFromPublicFund(@RequestBody RequestData requestData
            ){
...
}

注意java对象RequestData及其子对象的属性必须为小写,必须提供get,set方法。否则spring json解析器无法讲json数据解析到对应的对象属性上去。

spring data jpa 支持原生sql

只需要在repository接口里定义方法,方法上用@Query注解,设置nativeQuery=true即可

例如:

@Query(value = "select tt.*  from\n" +
"your sql",nativeQuery = true)
Object[] homeLastSixMonthAvgPrice();
注意返回的是数组哦,每个数组是一条数据,每条数据中每列又放在数组中。整体是个二维数组。

springboot primary标签

springboot中一个接口多个实现类,需要加@Primary标签

要不然,spring不知道该调用哪个实现。

示例代码:

@Primary
@Bean(name = "sjDb")
@ConfigurationProperties(prefix = "spring.sj")
public DataSource sjDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "tmwDb")
@ConfigurationProperties(prefix = "spring.tmw")
public DataSource tmwDataSource() {
return DataSourceBuilder.create().build();
}