Dubbo知识【消费服务调用提供服务完成一套增删改查】

1:提供者服务

domain

@Data
public class User implements Serializable {
    private Long id;
    private String username;
    private String address;
}

mapper:提供增删改查连接数据库的sql语句

@Mapper
public interface UserMapper{
    @Select("select * from tb_user where id = #{id}")
    User findById(@Param("id") Long id);

    @Insert("INSERT INTO tb_user(username,address) VALUES(#{username},#{address})")
    void adduser(@Param("username")String username,@Param("address") String address);
    @Select("SELECT * FROM tb_user")
    List<User> findAlluser();

    @Update("update tb_user set username = #{username} , address = #{address}  where id = #{id}")
    void edituser(@Param("username") String username , @Param("address") String address,@Param("id") Long id);

    @Delete("DELETE FROM tb_user WHERE id = #{id}")
    void deleteuser(@Param("id") Long id);
}

service接口

public interface UserService{

    public User findById1(Long id);

    public String adduser(User user);

    public String edituser(User user);

    public List<User> findAlluser();

    public String deleteUser(User user);
}

service接口实现类:暴露接口

/**
 * @Author 爱吃豆的土豆、
 * @Date 2023/3/27 11:28
 */
//暴露Dubbo服务
@DubboService
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;
    @Override
    public User findById1(Long id) {
        return userMapper.findById(id);
    }

    @Override
    public String adduser(User user) {
        try {
            userMapper.adduser(user.getUsername(), user.getAddress());
        } catch (Exception e) {
            e.printStackTrace();
            return "添加失败";
        }
        return "添加成功";
    }

    @Override
    public String edituser(User user) {
        try {
            userMapper.edituser(user.getUsername(),user.getAddress(),user.getId());
        } catch (Exception e) {
            return "修改失败";
        }
        return "修改成功";
    }

    @Override
    public List<User> findAlluser() {
        List<User> alluser = userMapper.findAlluser();
        return alluser;
    }

    @Override
    public String deleteUser(User user) {
        try {
            userMapper.deleteuser(user.getId());
        } catch (Exception e) {
            return "删除失败";
        }
        return "删除成功";
    }
}

启动类 

@SpringBootApplication
@EnableDubbo
public class UserProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserProviderApplication.class,args);
    }
}

yml文件:

server:
  port: 18081
spring:
  application:
    name: user-provider
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
logging:
  level:
    com.czxy: debug
  pattern:
    dateformat: HH:mm:ss:SSS
#配置dubbo提供者
dubbo:
  protocol:
    name: dubbo                           #dubbo协议和访问端口
    port: 20881							  #port值-1 表示让dubbo自行找一个可用的port
  registry:
    address: nacos://127.0.0.1:8848       #注册中心的地址
  scan:
    base-packages: com.czxy.user.service #dubbo注解的包扫描

2:消费者服务

配置类:用来测试

扫描二维码关注公众号,回复: 14697996 查看本文章

controller:

package com.czxy.user.controller;

import com.czxy.user.domain.User;
import com.czxy.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @DubboReference
    private UserService userService;

    /**
     * 根据id查询用户
     */
    @GetMapping("/{id}")
    public User queryById(@PathVariable("id") Long id) {
        User user  = userService.findById1(id);
        return user;
    }
    @PostMapping("/adduser")
    public String adduser(@RequestBody User user){
        String adduser = userService.adduser(user);
        return adduser;
    }
    @GetMapping
    public List<User> findAll(){
        return userService.findAlluser();
    }
    @PutMapping
    public String edituser(@RequestBody User user){
        String edituser = userService.edituser(user);
        return edituser;
    }
    @DeleteMapping
    public String deleteuser(@RequestBody User user){
        String s = userService.deleteUser(user);
        return s;
    }
}

yml文件

server:
  port: 18080
spring:
  application:
    name: user-consumer
logging:
  level:
    com.czxy: debug
  pattern:
    dateformat: HH:mm:ss:SSS
#配置dubbo服务消费者
dubbo:
  registry:
    address: nacos://127.0.0.1:8848

3:封装接口作为独立模块

将消费者服务对提供者服务的接口的调用封装为接口,提供者的接口

public interface UserService {
    public User findById1(Long id);

    public String adduser(User user);

    public String edituser(User user);

    public List<User> findAlluser();

    public String deleteUser(User user);
}

公共api依赖导入消费者服务进行使用公共接口

猜你喜欢

转载自blog.csdn.net/m0_64550837/article/details/129805539