SpringCloud传参

如不会搭建springcloud项目环境的可以参考我的上一篇博文:https://blog.csdn.net/qq_43222167/article/details/105577097

传递各种参数,直接上代码

服务提供端:

public interface OrderDao {

    int insertOrder(Order order);

    int deleteOrder(int id);

    int updateOrder(Order order);

    Order selectId(int id);

    /*Order selectIdUserName(int id,String userName);*/

    List<Order> selectAll();

    Order selectMap(Map<String,String> map);
}
public interface OrderService {
    int insertOrder(Order order);

    int deleteOrder(int id);

    int updateOrder(Order order);

    Order selectId(int id);

    /*Order selectIdUserName(int id,String userName);*/

    List<Order> selectAll();

    Order selectMap(Map<String,String> map);
}
import com.jbit.dao.OrderDao;
import com.jbit.entity.Order;
import com.jbit.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;
import java.util.Set;

@Service
@RestController
public class OrderServiceImpl implements OrderService {

    @Autowired
    private OrderDao orderDao;

    @RequestMapping(value = "insertOrder")
    @Override
    public int insertOrder(@RequestBody Order order) {
        return orderDao.insertOrder(order);
    }

    @RequestMapping(value = "deleteOrder")
    @Override
    public int deleteOrder(@RequestParam("id") int id) {
        return orderDao.deleteOrder(id);
    }

    @RequestMapping(value = "updateOrder")
    @Override
    public int updateOrder(@RequestBody Order order) {
        return orderDao.updateOrder(order);
    }

    @RequestMapping(value = "selectId")
    @Override
    public Order selectId(int id) {
        return orderDao.selectId(id);
    }

   /* @RequestMapping("selectIdUserName")
    @Override
    public Order selectIdUserName(int id, String userName) {
        return orderDao.selectIdUserName(id,userName);
    }*/

    @RequestMapping(value = "selectAll")
    @Override
    public List<Order> selectAll() {
        return orderDao.selectAll();
    }

    @RequestMapping(value = "selectMap")
    @Override
    public Order selectMap(@RequestBody Map<String, String> map) {
        System.out.println("provder--------------service");
        for(String s:map.keySet()){
            System.out.println("key:"+s+"value:"+map.get(s));
        }
        return orderDao.selectMap(map);
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.jbit.dao.OrderDao">

    <insert id="insertOrder" parameterType="Order">
        insert into orders(orderName,userName)values(#{orderName},#{userName})
    </insert>

    <delete id="deleteOrder">
        delete from orders where id=#{id}
    </delete>

    <update id="updateOrder" parameterType="Order">
        update orders set orderName=#{orderName},userName=#{userName} where id=#{id}
    </update>

    <select id="selectId" resultType="Order">
        select * from orders where id=#{id}
    </select>

    <!--<select id="selectIdUserName">
        select * from orders where id=#{id} and userName=#{userName}
    </select>-->

    <select id="selectAll" resultType="Order">
        select * from orders
    </select>

    <select id="selectMap" resultType="Order" parameterType="map">
        select * from orders where orderName=#{orderName} and userName=#{userName}
    </select>

</mapper>

消费者端

dao层和映射dao层就不再写出,与上面一模一样

import com.jbit.entity.Order;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

@FeignClient(name="provoider")//,url = "127.0.0.1:8081/")
public interface OrderService {

    @RequestMapping(value = "insertOrder")
    int insertOrder(@RequestBody Order order);

    @RequestMapping(value = "deleteOrder")
    int deleteOrder(@RequestParam("id") int id);

    @RequestMapping(value = "updateOrder")
    int updateOrder(@RequestBody Order order);

    @RequestMapping(value = "selectId")
    Order selectId(@RequestParam("id") int id);

  /*  @RequestMapping("selectIdUserName")
    Order selectIdUserName(@RequestParam("id") int id,@RequestParam("userName") String userName);*/

    @RequestMapping(value = "selectAll")
    List<Order> selectAll();

    @RequestMapping(value = "selectMap")
    Order selectMap(@RequestBody Map<String,String> map);
}
import com.jbit.entity.Order;
import com.jbit.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("order")
public class OrderController {

    @Autowired
    private OrderService orderService;

    @RequestMapping("insertOrder")
    public int insertOrder(Order order){
        System.out.println(order);
        return orderService.insertOrder(order);
    }

    @RequestMapping("deleteOrder")
    public int deleteOrder(int id){
        return orderService.deleteOrder(id);
    }

    @RequestMapping("updateOrder")
    public int updateOrder(Order order){
        return orderService.updateOrder(order);
    }

    @RequestMapping("selectId")
    public Order selectId(int id){
        return orderService.selectId(id);
    }

   /* @RequestMapping("selectIdUserName")
    public Order selectIdUserName(int id,String userName){
        return orderService.selectIdUserName(id,userName);
    }*/

    @RequestMapping("selectAll")
    public List<Order> selectAll(){
        return orderService.selectAll();
    }

    @RequestMapping("selectMap")
    public Order selectMap(String userName,String orderName){
        Map<String,String> map=new HashMap<String, String>();
        map.put("userName",userName);
        map.put("orderName",orderName);
        System.out.println("------------------");
        return orderService.selectMap(map);
    }
}

测试:

查询全部:
查询全部
根据id查询:
在这里插入图片描述
根据map查询:
在这里插入图片描述
增加:
在这里插入图片描述
修改:
在这里插入图片描述
删除:
在这里插入图片描述
总结:
1.单个参数在消费者方法使用@RequestParam(value)即可
2.实体类或Map集合需要使用@RequestBody

记录坑:
记得服务提供者一定要加@RestController,否则会报错:feign.FeignException: status 404 reading ActivityClientService#xxx

本文中有一个注释的方法,是传递多个参数的,不知道什么原因,就是用不了,网上说如果要多个参数就得用Map集合,如果有人知道,请告诉我,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值