上一章 零基础Java开发入门 spring boot 【系列二】-- 数据库连接之mysql+mybatis
我们这章解决小基本开发常见问题,先把get改成post
@RequestMapping(value="/user/walletList", method = RequestMethod.POST)
public List<UserWallet> userWalletList( @RequestBody userWalletBody userWalletBody){
List<UserWallet> userWallet = userMapper.selectUserWallet(userWalletBody.getId());
return userWallet;
}
对应userWalletBody类
@Data
class userWalletBody{
private Long id;
}
这时候我们用RequestBody而不是RequestParam是因为RequestParam不适合用在Accept: application/json的请求上,也就是Axios的默认请求方式。(Axios是前端主流请求库)
看下前端测试代码
Axios.post('http://localhost:3456/user/walletList', {id: 1}).then(res => {
console.log(res)
})
允许后会发现跨域了
CORS跨域
这时候随便在对应工程新建一个java文件,复制下面代码即可。
package com.example.demo.config;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
public class CORSFilter implements Filter {
private ServletRequest request;
private ServletResponse response;
private FilterChain chain;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
this.request = request;
this.response = response;
this.chain = chain;
HttpServletResponse res = (HttpServletResponse) response;
res.addHeader("Access-Control-Allow-Credentials", "true");
res.addHeader("Access-Control-Allow-Origin", "*");
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");
// 允许请求携带的请求头
res.addHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, token");
if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {
response.getWriter().println("ok");
} else {
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
然后我们就可以跨域了啦。
mapper转跳到xml
我们去IDEA安装这个插件即可,如下图
然后我们会发现左侧多了来往的绿色箭头,如下图👇
分页
@RequestMapping(value="/user/list", method = RequestMethod.POST)
public List<User> userList(@RequestBody PageInfo pageInfo){
List<User> userList = userMapper.selectList(pageInfo);
return userList;
}
然后在mapper添加一个selectList来覆盖默认的查询List<User> selectList(@Param("pageInfo") PageInfo PageInfo);,然后在xml里面添加一个sql语句和分页即可
<select id="selectList" resultType="com.example.demo.entity.User">
SELECT * FROM app.user LIMIT ${pageInfo.pageNum * pageInfo.pageSize},#{pageInfo.pageSize};
</select>
虽然完成了,但是这个注解好丑啊,可以去掉注解变成List<User> selectList(PageInfo PageInfo);然后把xml里面的【对象.】去掉,也就是下面代码
<select id="selectList" resultType="com.example.demo.entity.User">
SELECT * FROM app.user LIMIT ${pageNum * pageSize},#{pageSize};
</select>
--未完待续--