SpringMVC参数传递

规则:

SpringMVC 可以利用对象的方式接收
     * 底层实现: 参数name="xxx" 拼接set形成setName,之后检查对象中
     * 是否有对应的setName(), 如果匹配该方法,则为对象赋值.
     * 注意事项: 参数名称最好以属性名称一致
     * URL地址: http://localhost:8080/findUserLike_1?name=小乔&sex=女
     * 参数:  name=xxx&sex=xx
     * 返回值:List<User>

MP可以将对象中不为null的属性当做where条件

编辑UserController文件

 //改进:
    //规则: springMVC 可以利用对象的方式实现
    @GetMapping("/findUserList_1")
    public List <User> findUserList_1(User user1){


        return userService.findUserList_1(user1);
    }

编辑UserServiceImpl文件

 @Override
    //MP可以将对象中不为null的属性当做where条件
    public List<User> findUserList_1(User user1) {

        QueryWrapper <User>queryWrapper = new QueryWrapper<>(user1);

        return userMapper.selectList(queryWrapper);
    }

当然也可以少量参数进行传递。

RestFul参数接收


RestFul介绍

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
定义: RESTFul 是一种请求的规则(语法/定义)


RESTFul说明

Get请求: http://localhost:8090/findUserByNS?name=王昭君&sex=女


信息:

1.查询请求
2.参数直观 name=xxx
3.请求的结构冗余. 不合适多个参数的写法.

请求优化:
http://localhost:8080/user/小乔/18
优势:
1. 用户不能了解请求的意图 规定:请求方法名称不能出现 “动词”,只能写名词.
2. 参数保密, 只有后端服务器清楚参数的意义.
3. 请求字节传输量少 简洁.
注意事项:
1. URL地址中参数与参数之间使用 /分隔.
2. 请求的参数的位置一旦固定,不可轻易修改.
3. 用户发请求时,就应该按照restFul的结构执行.
4. restFul请求一般以get请求为主. put/delete/post
 

后端服务器接收规则:

参数列表加 @PathVariable

* 1.参数与参数之后使用 /分隔

* 2.参数的位置一旦确定,一般不变.

* 3.接收的参数使用 {形参变量}

* 4.使用@PathVariable 接收

* 注意事项: 如果名称不统一,则需要转化 具体如下:

* @PathVariable("name") String username

* url: http://localhost:8080/user/小乔/18

* 参数: name/age

* 返回值: List<User>

案例:

userController

    /**
     * 后端服务器接收规则:
     *     1.参数与参数之后使用 /分隔
     *     2.参数的位置一旦确定,一般不变.
     *     3.接收的参数使用 {形参变量}
     *     4.使用@PathVariable 接收
     * 注意事项: 如果名称不统一,则需要转化 具体如下:
     *          @PathVariable("name") String username
     *
     * url: http://localhost:8080/user/小乔/18
     * 参数: name/age
     * 返回值: List<User>
     */

    @GetMapping("user/{name}/{age}")
    public List<User> findUserByNA(@PathVariable String name,
                                   @PathVariable Integer age){
        System.out.println(name);
        System.out.println(age);

        return null;
    }

UserServiceImpl

MP可以将对象中不为null的属性当做where条件

查询:name= 小乔 age = 18可直接封装为对象

   @Override
    //MP可以将对象中不为null的属性当做where条件
    public List<User> findUserList_1(User user1) {

        QueryWrapper <User>queryWrapper = new QueryWrapper<>(user1);

        return userMapper.selectList(queryWrapper);

问题:若有多个参数,则不是很方便

改进:有多个参数使用对象接收,参数必须与对象的属性一样。

改进案例:

userController

    @GetMapping("user/{name}/{age}")
    public List<User> findUserByNA(User user2){

        return userService.findUserByNA(user2);
    }
UserServiceImpl

查询:name=小乔   且age>12的数据

规则: 字段与属性的逻辑运算符为 = 号时可以 使用实体对象(user)封装否则手动添加
 需要手写

注意使用get属性的方法,不要写的固定。从浏览器上接收。

 //规则: 字段与属性的逻辑运算符为 = 号时 使用实体对象(user)封装
    //需要手写
    @Override
    public List<User> findUserByNA(User user2) {
        QueryWrapper<User> queryWrapper = new QueryWrapper();
        queryWrapper.eq("name",user2.getName())
                    .gt("age",user2.getAge());
        return userMapper.selectList(queryWrapper);
    }
 

查询多个相同属性名的数据

查询id= 1,2,3,4

规则: 如果参数使用  ","  号分隔,则SpringMVC可以自动的转化为数组.

* URL: http://localhost:8090/getUserByIds?ids=1,3,4,5

* 参数: ids = 1,3,4,5

* 返回值: List<User>

UserConroller

@GetMapping("getIds")
public List<User> getIds(Integer [] ids) {

    return userService.getIds(ids);
}
UserServiceImpl
 @Override
    public List<User> getIds(Integer[] ids) {

        List<Integer> listIds = Arrays.asList(ids);

        return userMapper.selectBatchIds(listIds);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值