pojo:注意事项
类上注解:
@Data @Accessors(chain = true) @TableName("demo_user")
实体类与数据库表名连接映射注解:@TableName("user")
属性映射注解:
主键:@TableId(type = IdType.AUTO)
字段:
mapper接口
要使用MP,在mapper接口需继承BaseMapper<实体类名>
在启动类上需加MapperScan("含有mapper接口的包路径")
//作用:实现接口文件ioc
Service业务层
service接口实现类需加@service
controller类
//@controller //@ResponseBody //作用:将前端数据通过json串返回 @RestController @CrossOrigin //开启跨域请求
请求类型与参数传递方式
请求类型:get(浏览器默认提交方式)/delelte/ post/put/ * @GetMapping("") * @PostMapping("") * @PutMapping("") * @DeleteMapping("") * 返回值结果:User对象的josn串 * 参数说明: * 1.参数名称必须与URL中的名称一致 * 2.SpringMVC可以根据用户的需求,自动实现类型的转换 * 底层实现:springMVC所有参数默认都是string类型 * 根据用户参数类型,自动转换
get请求:用于查询
* 规则:SpringMVC 可以利用对象的方式接收 * 底层实现:自动拼接setName()方法,之后去检查对象中是否有对应的set方法方法 * 如果匹配该方法,则为对象赋值 * 注意事项:参数名称必须与属性一致
*后端服务器接收规则: * 1.参数与参数之后用 / 分隔 * 2.参数的位置确定后一般不做改变 * 3.接收的参数使用{形参变量} * 4.使用@PathVariable 接收参数 * 5.如果参数有多个建议使用 对象接收 参数必须与属性一致 * 注意事项:如果名称不一致,则需要转换,具体如下: * @PathVariable("name") String username
1.直接通过id值传递查询
例如:url = "http://localhost:8090/axios/getUserById?id=1"
后台代码直接接收参数,返回对象
2.利用restful查询数据
即通过用户传递值实现查询效果
let sex2="女"
let age2=18
模板字符串:
语法:一对反引号 ``
取值:${key} 形式取值
优势:保留代码格式
let url2 = `http://localhost:8090/axios/user/${sex2}/${age2}`
后台代码可直接用对象作为参数
3.利用对象实现参数传递
参数语法:
参数结构:{}
关键字(固定写法):params
value:用户需要传递的值
let user = {
name: '王昭君',
sex: '女',
age: 19
}
let url3 = "http://localhost:8090/axios/getUser"
axios.get(url3,{params : user})
.then(Promise => {
console.log(Promise.data)})
delete请求:与get一样,一般通过主键id删除数据
post请求:用于新增,登录
前端代码:
需求:实现用户新增
语法:axios.post(url,新增参数)
规则:如果post/put 传递对象则直接赋值
let user = {
name : "小燕子",
age : 18,
sex : "女"
}
let url = "http://localhost:8090/axios/saveUser"
axios.post(url,user)
.then( Promise => {
console.log(Promise.data)
})
后端代码:
* 需求:实现用户入库操作 * url:http://localhost:8090/axios/saveUser * 参数: * 返回值:String * 难点: * json != user对象 * json 互转 user对象 * 1.user对象转换为json @ResponseBody * 2.json转化为user对象 @RequestBody */ @PostMapping("saveUser") public String saveUser(@RequestBody User user){ userService.saveUser(user); return "注册成功"; }
put请求:用于用户的修改操作
普通用户修改
语法:axios.post(url,新增参数)
规则:如果post/put 传递对象则直接赋值
后端:通过updateById(user)
*以对象中id值作为where条件,其他不为空的属性作为色条条件
将批量更改时:
@RequestBody 当前端传递的是对象时使用
@PathVariable 当前端传递具体参数,后端用自定义变量名接收时使用
需求2:将name=小燕子的改为user2
难点:如果有多个参数,并且重复时,如何封装
解决办法:restful + 对象
let whereName = "小燕子"
let user2 = {
name : "小鬼当家",
age : 12,
sex : "女"
}
let url2 =`http://localhost:8090/axios/updateUserByName/${whereName}`
axios.put(url2,user2)
.then( Promise => {
console.log(Promise.data)
})
后端:
@PutMapping("updateUserByName/{whereName}") public String updateUserByName(@RequestBody User user, @PathVariable String whereName){ userService.updateUserByName(user,whereName); return "修改成功222"; }
业务层:将wherename作为条件,整个对象作为set条件
@Override public void updateUserByName(User user, String whereName) { QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name", whereName); userMapper.update(user, queryWrapper); }