不同的数据库之间,如何共同调用?接下来讲讲两个数据库之间如何交互
1、微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务
2、微服务可以将业务暴露为接口,供其它微服务使用3、不同微服务都应该有自己独立的数据库
微服务调用方式
·基于RestTemplate发起的http请求实现远程调用
. http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。
步骤一:注册RestTemplate
在order-service的OrderApplication中注册RestTemplate
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}//创建RestTemplate并注入Spring容器@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}
步骤二:服务远程调用RestTemplate
修改order-service中的OrderService的queryOrderByld方法
@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);// 2.利用RestTemplate发送http请求,查询用户// 2.1.url路径String url = "http://localhost:8081/user/" + order.getUserId();// 2.2.发送http请求,实现远程调用User user = restTemplate.getForObject(url, User.class);//第一个参数是路径,第二个参数是返回的类=类型// 3.封装user到orderorder.setUser(user);// 4.返回return order;}
}
成果:
第一个数据库的表:
第二个数据库的表:
查询结果:两个数据库交互查询
代码文件下载https://pan.baidu.com/s/1MbD4cSpIRI-RbExdvOyAHg?pwd=ia6t
下一篇:Eureka