SpringBoot-dubbo增删改查整体流程

springboot-dubbo

首先先创建一个简单的maven项目
在这里插入图片描述
里面存放实体类(entity)服务类(service)
在这里插入图片描述

实体类要继承Serializable

在这里插入图片描述

实体类可以引入lombok依赖一个@Data注解完事

        <dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

service层写简单的接口

    List<User> getAll();//查询

    Integer update(User user);//修改

    Integer add(User user);//添加

    Integer delete(Integer id);//根据id删除

在创建一个provider项目

  1. provider 作用
    该项目提供 Service 接口的服务, 并把服务注册到 Zookeeper 注册中心, 供服务消费者订阅调用。
  2. provider 原理
    在项目中配置 Zookeeper 注册中心地址, 并把服务实现类暴露给注册中心。(下面会有Zookeeper 注册中心的原理使用流程)
  3. provider 实现步骤
    1)添加springbootDubbo依赖 :spring-boot-starter-dubbo以及Zookeeper 注册中心依赖
        <!-- dubbo集成springboot的依赖 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <!-- zookeeper注册中心 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <type>pom</type>
        </dependency>

还有一个就是要把刚刚创建的api项目里的接口依赖引入
打开刚刚创建的api项目pom.xml文件复制到provider项目pom.xml里引入接口依赖
在这里插入图片描述
数据库依赖以及mybatis依赖

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

接下来就是配置StringBoot 集成 Dubbo 相关服务端配置信息(application.properties)

# 应用名称
spring.application.name=dubbo-consumer

#数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/scdb20210906?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

#数据库用户名&密码
spring.datasource.username=root
spring.datasource.password=123456

#数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#应用服务WEB访问端口
server.port=8082

#配置dubbo服务名称
dubbo.application.name=dubbo-consumer
#配置注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181



mybatis.typeAliasesPackage=com.ck.entity
mybatis.mapperLocations=classpath:mapper/*.xml
spring.profiles.active=dev
  • 注意: Zookeeper 注册中心地址为: zookeeper://127.0.0.1:2181 provider 项目端口号为
    8002, 暴露服务端口号为: 20882

准备工作做好开始写接口

创建一个mapper类

    List<User> getAll();//查询

    Integer update(User user);//修改

    Integer add(User user);//添加

    Integer delete(Integer id);//根据id删除

创建提供的服务(service.impl)

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;

    @Override
    public List<User> getAll() {
        return userMapper.getAll();
    }

    @Override
    public Integer update(User user) {
        return userMapper.update(user);
    }

    @Override
    public Integer add(User user) {
        return userMapper.add(user);
    }

    @Override
    public Integer delete(Integer id) {
        return userMapper.delete(id);
    }

创建mapper文件夹
mapper.xml(存放sql语句)

<?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.ck.mapper.UserMapper">
        <select id="getAll" resultType="user">
            select * from user
        </select>
        <update id="update">
            UPDATE `user` SET `name` = #{name}, `age` = #{age}, `sex` = #{sex} WHERE
            `id` = #{id};
        </update>
        <insert id="add">
            INSERT INTO `user` (`name`, `age`, `sex`) VALUES (#{name},#{age},#{sex});
        </insert>
        <delete id="delete">
            delete from user where id=#{id};
        </delete>
    </mapper>

namespace=“接口的方法”

发布服务

@MapperScan("com.ck.mapper")
@EnableDubbo
@SpringBootApplication
public class DubboServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboServiceApplication.class, args);
    }

}

注意几个注解
@MapperScan(“扫描接口包”)
@EnableDubbo(启动Dubbo)

再创建一个springboot-dubbo-consumer项目

  1. consumer 作用
    该项目消费 Service 接口的服务, 从 Zookeeper 注册中心订阅调用 Service 服务。

  2. consumer 原理
    在项目中配置 Zookeeper 注册中心地址, 项目按照接口类型调用远程服务 Service。

  3. consumer 实现步骤
    添加springbootDubbo依赖 :spring-boot-starter-dubbo以及Zookeeper 注册中心依赖

        <!-- dubbo集成springboot的依赖 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <!-- zookeeper注册中心 -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <type>pom</type>
        </dependency>

在配置文件中配置 StringBoot 集成 Dubbo 相关消费端配置信息(application.properties)
(和provider项目配置一样就行)

# 应用名称
spring.application.name=dubbo-consumer

#数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/scdb20210906?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

#数据库用户名&密码
spring.datasource.username=root
spring.datasource.password=123456

#数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

#应用服务WEB访问端口
server.port=8082

#配置dubbo服务名称
dubbo.application.name=dubbo-consumer
#配置注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181



mybatis.typeAliasesPackage=com.ck.entity
mybatis.mapperLocations=classpath:mapper/*.xml
spring.profiles.active=dev

创建服务消费类

@RestController
public class UserController {
    @Reference
    UserService userService;

    //查询
    @RequestMapping("/getAll")
    public List<User> getAll(){
        return userService.getAll();
    }

    //修改
    @RequestMapping("/update")
    public Integer update(User user) {
        return userService.update(user);
    }

    //添加
    @RequestMapping("/add")
    public Integer add(User user) {
        return userService.add(user);
    }

    //添加
    @RequestMapping("/delete")
    public Integer delete(Integer id) {
        return userService.delete(id);
    }

在控制器层(或其它层)声明同类型属性,并使用@Reference 自动注入远程服务
@Reference 的包为 com.alibaba.dubbo.config.annotation.Reference

在已经启动 zookeeper 注册中心和 springboot-dubbo-provider 的前提下, 启动 SpringBoot 项目springboot-dubbo-consumer

现在来讲下zookeeper 注册中心
我给大家准备好了直接下载解压
链接:https://pan.baidu.com/s/1eCwsQHHWD0gVeLJ2qzTBFQ
提取码:0zme
也可以去官网下载http://www.apache.org/dyn/closer.cgi/zookeeper下载后解压即可

打开bin

在这里插入图片描述

双击打开红框即可运行

在这里插入图片描述

在这里插入图片描述
有显示0.0.0.0:2181运行成功

Zookeeper 注意事项

  1. Zookeeper 客户端连接端口号我们配置为 2181 , 记得以后连接我们都将使用这个端口号。(运行Zookeeper 注册中心之后2181以及8080端口是会被占用的)
  2. Zookeeper 启动之后命令行窗口一直开着, 不要关掉这个 cmd, 记得要在 Dubbo 消费者和提供者运行之前就开启 Zookeeper。
接下来运行项目就行了

运行步骤:

  1. 保证Zookeeper 注册中心正常运行以及运行成功
  2. 运行provider项目
  3. consumer项目

最后要确保两个项目的端口不一样

#应用服务WEB访问端口
server.port=8082

项目启动成功之后访问localhost:(consumer项目的端口)/ 方法名

最后的最后三个项目的整体框架

在这里插入图片描述

在这里插入图片描述

idea如何合并项目可以查看我的其他博客👇👇👇👇

https://blog.csdn.net/chenkunNB/article/details/120321359?spm=1001.2014.3001.5501

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
由于缺乏具体的需求描述和数据结构定义,以下代码仅供参考。 ``` <?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.example.mapper.AddressMapper"> <!-- 查询用户的所有收货地址 --> <select id="findUserAddresses" resultType="com.example.entity.Address"> SELECT * FROM address WHERE user_id=#{userId} </select> <!-- 新增收货地址 --> <insert id="addAddress" parameterType="com.example.entity.Address"> INSERT INTO address(user_id, name, phone, province, city, district, detail) VALUES(#{userId}, #{name}, #{phone}, #{province}, #{city}, #{district}, #{detail}) </insert> <!-- 更新收货地址 --> <update id="updateAddress" parameterType="com.example.entity.Address"> UPDATE address SET name=#{name}, phone=#{phone}, province=#{province}, city=#{city}, district=#{district}, detail=#{detail} WHERE id=#{id} AND user_id=#{userId} </update> <!-- 删除收货地址 --> <delete id="deleteAddress" parameterType="int"> DELETE FROM address WHERE id=#{id} AND user_id=#{userId} </delete> </mapper> ``` 其中,`com.example.entity.Address` 是收货地址的实体类,包含属性:`id`、`userId`、`name`、`phone`、`province`、`city`、`district`和`detail`。`userId`是关联用户表的外键。 该XML中定义了四个SQL语句,分别为: - `findUserAddresses`:查询指定用户的所有收货地址。 - `addAddress`:新增收货地址。 - `updateAddress`:更新收货地址。 - `deleteAddress`:删除收货地址。 每个SQL语句的参数类型和返回结果类型都在XML中定义。使用时,需要将该XML文件与对应的Java接口一起使用,由Dubbo框架自动管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值