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
編碼的內(nèi)容仰禀。(Http協(xié)議中照雁,如果不指定Content-Type,則默認傳遞的參數(shù)就是application/x-www-form-urlencoded類型
)
@RequestParam 注解 加與不加的區(qū)別
@RequestMapping("/list")
public String test(@RequestParam Long userId) {
}
@RequestMapping("/list")
public String test( Long userId) {
}
第一種必須帶有參數(shù),也就是說你直接輸入localhost:8080/list 會報錯 不會執(zhí)行方法 只能輸入localhost:8080/list?userId=? 才能執(zhí)行相應的方法
第二種 可帶參數(shù)也可不帶參數(shù) 就是說你輸入 localhost:8080/list 以及 localhost:8080/list?userId=? 方法都能執(zhí)行
當然你也可以設置 @RequestParam 里面的required為false(默認為true 代表必須帶參數(shù)) 這樣就跟第二種是一樣的了
完整參數(shù)
@RequestMapping("/list")
public String test(@RequestParam(value="id" ,defaultValue="0", required=true) Long userId) {
//...
}
這樣會用id 代替userId 也就是說你地址里面?zhèn)魅氲膮?shù)名稱為id localhost:8080/list?id=答恶?
@RequestBody處理HttpEntity傳遞過來的數(shù)據(jù)饺蚊,一般用來處理非Content-Type: application/x-www-form-urlencoded
編碼格式的數(shù)據(jù)。
GET請求中悬嗓,因為沒有HttpEntity污呼,所以@RequestBody并不適用。
POST請求中包竹,通過HttpEntity傳遞的參數(shù)燕酷,必須要在請求頭中聲明數(shù)據(jù)的類型Content-Type,SpringMVC通過使用HandlerAdapter 配置的HttpMessageConverters來解析HttpEntity中的數(shù)據(jù)周瞎,然后綁定到相應的bean上悟狱。
在GET請求中,不能使用@RequestBody堰氓。
在POST請求挤渐,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody双絮,對于參數(shù)轉化的配置必須統(tǒng)一浴麻。