1.myBatis使用错误:
-
1.1 mapper映射文件中,当查询结果为多条结果时,在mapper接口中返回值可以封装成List集合,但是mapper映射文件中的resultType中只能是List<E>中的元素类型,如下例子:
image.png
mapper.xml中
image.png
切记:不能定义成java.util.List,会报如下错误:
Cause: java.lang.UnsupportedOperationException
2.springMVC中@RequestBody和@RequestParam
@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded
编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型
)
@RequestParam 注解 加与不加的区别
@RequestMapping("/list")
public String test(@RequestParam Long userId) {
}
@RequestMapping("/list")
public String test( Long userId) {
}
第一种必须带有参数,也就是说你直接输入localhost:8080/list 会报错 不会执行方法 只能输入localhost:8080/list?userId=? 才能执行相应的方法
第二种 可带参数也可不带参数 就是说你输入 localhost:8080/list 以及 localhost:8080/list?userId=? 方法都能执行
当然你也可以设置 @RequestParam 里面的required为false(默认为true 代表必须带参数) 这样就跟第二种是一样的了
完整参数
@RequestMapping("/list")
public String test(@RequestParam(value="id" ,defaultValue="0", required=true) Long userId) {
//...
}
这样会用id 代替userId 也就是说你地址里面传入的参数名称为id localhost:8080/list?id=?
@RequestBody处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded
编码格式的数据。
GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。
在GET请求中,不能使用@RequestBody。
在POST请求,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。
网友评论