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:消费者服务
配置类:用来测试
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依赖导入消费者服务进行使用公共接口