请老师检查!

请老师检查!

3-4

1.数据库中建立phone与phone_price表格

创建phone表;

创建phone_price表;

35.1090



2.开发服务发布模块 (producer)

2.1 前提准备

创建父模块:

35.1091

35.1099

2.2 正式编写

a.创建实体类Phone,定义编号、手机编号、名称、颜色、是否上架属性,并完成getter/setter等方法。

  ...;
 
 
  ..;
 
 
  
  
      {          
 
      ;
      ;
      ;
      ;
      ;
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
 
     
       () {
           
                    
                    
                      
                      
                    
                 ;
     }
 }

b.定义手机查询的接口PhoneMapper,在接口中定义查询手机的方法,并使用Mybatis完成查询的sql语句。


  ...;
  ....;
  ....;
  ....;
  ...;
  ..;
 
 
                              
 
    {
 
     ()
      ();
 
 }

c.实现手机服务发布接口PhoneListService,定义方法getPhoneList完成手机数据查询。

  ...;
  ....;
  ..;
 
 
 
    {
 
      ();
 
 }


  ....;
  ....;
  ....;
  ....;
  .....;
  ..;
  ..;
 
 
 
 (  )            
      {
 
     
      ;
 
 
     
       () {
          .();
     }
 
 }

启动类

  ..;
  ...;
  ....;
 
 
 
             
    {
 
        ([] ) {
         .(., );
 
     }
 
 }




3.开发费服务消费模块(consumer)

a.  创建价格实体类PhonePrice和手机价格PhoneAndPrice。

PhonePrice存在编号,手  机编号和价格属性。

PhoneAndPrice存在编号,手机编号,名称和价格属性。并完成getter/setter等方法

  ...;
  ..;
 
 
  
  
      {          
 
      ;
      ;
      ;
 
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
     
       () {
           
                    
                    
                    
                 ;
     }
 }


  ...;
  ..;
 
 
  
  
      {          
 
      ;
      ;
      ;
      ;
 
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
       () {
          ;
     }
 
       ( ) {
         .  ;
     }
 
     
       () {
           
                    
                    
                      
                    
                 ;
     }
 }

b.  定义价格的查询的PhonePriceMapper接口,在接口中定义查询价格的方法,并使用Mybatis完成查询的sql语句。

  ...;
  ....;
  ....;
  ....;
  ...;
 
 
 
 
 
    {
 
     ()      
      ( );
 
 
 }


c.  定义手机价格查询PhonePriceService接口,PhonePriceServiceImpl实现该接口。

     1)、在PhonePriceServiceImpl中,根据id查询手机价格

     2)、在PhonePriceServiceImpl中,调用producer中PhoneListService接口查询所有手机信息,与查询的价格匹配封装到PhoneAndPrice中。

  ...;
  ....;
  ....;
  ..;
 
 
    {
 
      ( );
 
 
     
      ();
 }


  ....;
  ....;
  ....;
  ....;
  ....;
  ....;
  ....;
  .....;
  ...;
  ..;
  ..;
  ..;
 
 
             
      {
 
     
      ;
 
     
     (  )       
      ;                    
 
 
 
 
 
     
       ( ) {
          .();
     }
 
 
     
     
       () {
             ();
            .();            
          (   ;   .(); ) {
                 .();
              (  ) {                                            
                     ();
                 .(.());
                 .(.());
                 .(.());
 
                    (.());
                 .(.());
 
                 .();
             }
         }
          ;
     }
 
 
 
 }


 d.  在concumer模块中定义PhonePriceController,并注入PhonePriceService,调用该类方法,完成开放对外消费接口

  ...;
  ....;
  ....;
  .....;
  .....;
  ..;
  ..;
 
 
 
    {
 
     
      ;
 
 
 
     ()
       () {
          .();           
     }
 
 
 
 
 }

启动类:

  ..;
  ...;
  ....;
 
 
 
 
    {
 
        ([] ) {
         .(., );
     }
 
 }



4. 结果

35.1098




5.我曾遇到过的问题(坑):

问题1:消费者使用其他模块的服务时,只写@Reference注解,忘记了指定其他模块服务的版本:

应该如红框所写:

35.1094


问题2:写 sql 时,容易多加一个 } 。且还没有红波浪线提示。

35.1095


解决: 所以,直接按一下 {  即可,因为会自动补全另外一半的大括号。

35.1096

问题3:自己写时,消费者,也错误的加了右下方的dubbo扫描配置;

其实不用加,因为消费者的service层,是用于对外暴露服务的,与dubbo无关;而只有被调用的生产者,其service层才是一个dubbo服务,才需要扫描这个路径下的dubbo的注解@Servicer

35.10971


问题4:对象列表创建方式不对,导致即使查询出了正确的数据,对象列表也没装进去。

35.1092


解决:

应该通过new的方式,创建一个对象列表;(OOP)

对从数据库中查询出来的对象,要有判空的意识;

![35.1093](https://gcore.jsdelivr.net/gh/JerryZhengzzz/images@main/Java/35.1093.png)


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,同学的问题老师在这里已经做了回答,请查看: https://class.imooc.com/course/qadetail/341478

祝学习愉快~

  • Jerry_Zheng24 提问者 #1
    老师,你可以把这个提问删除吗?我手抖多发的,是乱序的这个版本,我这边貌似删除不了 :)
    2023-02-04 16:00:49
  • 好帮手慕小蓝 回复 提问者 Jerry_Zheng24 #2

    同学你好,老师这里也是无法删除的。不过对同学也没有影响的。

    祝学习愉快~

    2023-02-04 17:28:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师