Dubbo【Dubbo实战(整合Mybaits-plus配置、接口、集成Thymeleaf) 】(五)-全面详解(学习总结---从入门到深化)

news2024/11/16 4:29:10

 

目录

​编辑

Dubbo实战_整合Mybaits-plus配置

Dubbo实战_创建添加用户接口

 Dubbo实战_查询用户业务接口

 Dubbo实战_更新用户业务接口

 Dubbo实战_删除用户业务接口

 Dubbo实战_集成Thymeleaf

Dubbo实战_用户添加业务消费者实现

Dubbo实战_用户查询业务消费者实现


Dubbo实战_整合Mybaits-plus配置

修改mapper工程pom文件

  <dependencies>
       <!-- 引入 pojo 工程-->
        <dependency>
            <groupId>com.tong</groupId>
            <artifactId>pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- Mybatis plus 依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-bootstarter</artifactId>
        </dependency>
        <!--MySQL 数据库依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

修改provider的POM文件

引入Mapper依赖

<dependency>
     <groupId>com.tong</groupId>
     <artifactId>mapper</artifactId>
     <version>1.0-SNAPSHOT</version>
</dependency>

配置provider

配置数据源

################ 配置MySQL数据源 ##############
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.66.100:3306/txc_his?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456

添加MapperScan注解

在 SpringBoot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件 夹:

@SpringBootApplication
@MapperScan("com.itbaizhan.mapper")
public class Application {
    public static void main(String[] args) {
       SpringApplication.run(Application.class,args);
   }
}

Dubbo实战_创建添加用户接口

在user_api工程引入pojo工程

<dependency>
     <groupId>com.tong</groupId>
     <artifactId>pojo</artifactId>
     <version>1.0-SNAPSHOT</version>
</dependency>

在user_api项目中创建添加用户接口

public interface IAddUserService {
    /**
     * 添加用户
     * @param users
     */
    void addUser(User users);
}

引入user_api工程

<dependency>
    <groupId>com.tong</groupId>
    <artifactId>user_api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

添加Dubbo配置

################ Dubbo 配置
####################
dubbo.application.name=myProvider
# 单机
dubbo.registry.address=zookeeper://192.168.66.100:2181
# zookeeper 集群
#dubbo.registry.address=zookeeper://192.168.233.130:2181?
backup=192.168.233.130:2182,192.168.233.130:2183
dubbo.registry.timeout=50000
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.scan.basepackages=com.tong.provider.service

在provider中实现添加用户业务接口

/**
* 添加用户业务
*/
public class AddUserServiceImpl implements IAddUserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public int addUser(User users) {
        return  userMapper.insert(users);
   }
}

测试添加服务

 Dubbo实战_查询用户业务接口

Dubbo实战_查询用户业务接口

public interface FindUserService {
    List<Users> findUserAll();
}

在 provider中实现查询用户业务接口

/**
* 查询用户业务层
*/
@Service
public class FindUserServiceImpl implements IFindUserService {
    @Autowired
    private UserMapper userMapper;
    /**
     * 查询用户
     * @return
     */
    @Override
    public List<User> findUserAll() {
        return  userMapper.selectList(null);
   }
}

测试服务

 Dubbo实战_更新用户业务接口

在 user_api 项目中添加更新用户业务接口

public interface IUpdateUserService {
   Users preUpdateUsers(Integer userid);
   void updateUsers(Users users);
}

在 provider 中实现更新用户业务接口

/**
 * 更新用户业务
 */
@Service
public class UpdateUserServiceImpl implements IUpdateUserService {
   @Autowired
   private UserMapper userMapper;
   /**
     * 根据用户id更新用户名字
     * @param users
     * @return
     */
   @Override
   public Integer updateUsers(User users) {
       return   userMapper.updateById(users);
   }
    
}

测试服务

 Dubbo实战_删除用户业务接口

在user_api项目中添加删除用户业务接口

public interface IDeleteUserService {
    /**
     * 根据用户id删除用户
     * @param userid
     */
    void deleteUsersById(Integer userid);
}

在provider中实现删除用户业务接口

@Service
public class DeleteUserServiceImpl implements IDeleteUserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public Integer deleteUsersById(Integer userid) {
        return userMapper.deleteById(userid);
   }
}

测试服务

 Dubbo实战_集成Thymeleaf

修改user_consumer工程pom文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

配置视图解析器

默认

spring-boot很多配置都有默认配置,比如默认页面映射路径为

classpath:/templates/*.html

同样静态文件路径为

classpath:/static/

自定义

在application.properties(或者application.yml)中可以配置 thymeleaf模板解析器属性.就像使用springMVC的JSP解析器配置一样

#thymeleaf start
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
#开发时关闭缓存,不然没法看到实时页面
spring.thymeleaf.cache=false
#thymeleaf end

编写index.html首页

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
<head>
<meta charset="UTF-8">
   <title>首页</title>
</head>
<body>
   <a href="/addUser">添加用户</a>&nbsp;&nbsp;&nbsp;<a href="/user/getUser">查询用户</a>
</body>
</html>

创建页面跳转 Controller

@Controller
public class PageController {
   /**
     * 完成页面跳转
     */
   @GetMapping("/{page}")
   public String showPage(@PathVariable String page){
       return page;
   }
}

Dubbo实战_用户添加业务消费者实现

编写adduser.html页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<link rel="shortcut icon" href="../resources/favicon.ico"
th:href="@{/static/favicon.ico}"/>
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
<form>
   用户姓名:<input type="text" name="name"/><br/>
   用户年龄:<input type="text" name="age"/><br/>
    <input type="submit" value="OK"/>
</form>
</body>
</html>

编写用户添加接口

/**
* 处理用户操作控制器
*/
@Controller
@RequestMapping("/user")
public class UsersController {
    @Autowired
    private IUserService userService;
    /**
     * 处理添加用户请求
     */
    @RequestMapping("/addUser")
    public String addUser(User users){
        this.userService.addUser(users);
        return "redirect:/ok";
   }
}

编写用户接口

public interface IUserService {
    /**
     * 添加用户
     * @param users
     */
    void addUser(User users);
}

编写用户接口实现类

/**
* 用户操作业务层
*/
@Service
public class UserServiceImpl implements IUserService {
  // 用户添加接口
    @Reference
    private IAddUserService iAddUserService;
    
    // 添加用户
    @Override
    public void addUser(User users) {
        this.iAddUserService.addUser(users);
   }
}

编写返回页面ok.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
<head>
    <meta charset="UTF-8">
    <title>成功页面</title>
</head>
<body>
   操作成功请<a href="/index">返回</a>
</body>
</html>

Dubbo实战_用户查询业务消费者实现

修改Consumer添加处理查询用户请求接口

public interface IUserService {
    /**
     * 添加用户
     * @param users
     */
    void addUser(User users);
    /**
     * 查询用户
     * @return
     */
    List<User> getUsersAll();
}

编写接口实现类型

@Reference
private IFindUserService iFindUserService;
    
/**
* 查询全部用户
* @return
*/
@Override
public List<User> getUsersAll() {
   return iFindUserService.findUserAll();
}

修改Consumer添加处理查询用户请求

    /**
     * 处理查询用户请求
     */
    @GetMapping("/getUser")
    public String getUser(Model model) {
        List<User> list = this.userService.getUsersAll();
        model.addAttribute("list", list);
        return "showUser";
   }

创建showUser 页面

<!DOCTYPE html>
<html lang="en"
xmlns:th="http://www.thymeleaf.org">
<link rel="shortcut icon"
href="../resources/favicon.ico"
      th:href="@{/static/favicon.ico}"/>
<head>
    <meta charset="UTF-8">
    <title>显示用户</title>
</head>
<body>
<table border="1" align="center">
    <tr>
        <th>用户 ID</th>
        <th>用户姓名</th>
        <th>用户年龄</th>
        <th>操作</th>
    </tr>
    <tr th:each="user:${list}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.name}"></td>
        <td th:text="${user.age}"></td>
        <td>
            <a th:href="@{/user/preUpdateUser(userid=${user.id})}">修改用户
            </a>
            <a th:href="@{/user/deleteUser(userid=${user.id})}">删除用户</a>
        </td>
    </tr>
  </table>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R带参数运行

rm(listls()) suppressPackageStartupMessages({library(getopt) })# getopt(),是getopt包的函数&#xff0c;需要先按照getopt包 # # getopt(spec NULL, opt commandArgs(TRUE),command get_Rscript_filename(), usage FALSE,debug FALSE) # # spec&#xff1a;一个4或…

linux suse12 安装mysql

1.下载mysql https://dev.mysql.com/downloads/mysql/ 2.选中mysql版本 对选中的版本进行下载 也可以在linux服务器上直接下载&#xff1a;wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 3.把下载好的文件放到/usr/local…

mac上的vscode设置用滚轮来调节编辑页面大小

mac上的vscode设置用滚轮来调节编辑页面大小 问题背景 今天在mac上安装了vscode&#xff0c;刚想编写代码&#xff0c;但是突然发现无法用ctrl鼠标的滚轮来进行控制 代码编辑区域字体的大小。 解决方法 经过查找资料&#xff0c;发现在设置的配置文件中&#xff0c;有一个配…

前后端分离模式开发的BS电子病历编辑器源码(Java)

电子病历系统&#xff0c;是医学专用系统。医院通过电子病历以电子化方式记录患者就诊的信息&#xff0c;包括&#xff1a;首页、病程记录、检查检验结果、医嘱、手术记录、护理记录等等&#xff0c;其中既有结构化信息&#xff0c;也有非结构化的自由文本&#xff0c;还有图形…

HOT19-螺旋矩阵

leetcode原题链接&#xff1a;螺旋矩阵 题目描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例…

通过USB和wifi连接真机编写第一个脚本

目录 一、连接手机 1、通过usb数据线连接手机 2、无线连接手机 二、编写第一个脚本 一、连接手机 1、通过usb数据线连接手机 数据线连接手机并允许调试 cmd命令行执行&#xff1a; adb devices 如果没有显示device信息&#xff0c;请检查&#xff1a; 手机是否开启usb调…

element的时间控件默认值为当前时间

vue代码 <el-form-item label"验收时间" prop"checkAcceptTime"><el-date-picker clearablev-model"form.checkAcceptTime"type"datetime"value-format"yyyy-MM-dd HH:mm:ss"placeholder"请选择验收时间"…

微信发布新规:这功能,要收费了

近日&#xff0c;微信小程序发布《关于手机号快速验证组件升级及收费的通知》&#xff0c;通知中指出&#xff1a;手机号验证能力在原有基础上&#xff0c;新增手机号实时验证能力。 同时&#xff0c;为了平衡技术服务与运营成本&#xff0c;平台将于2023年8月26日起对手机号验…

SQL Server,想要查询某表数据,但表名存放在别的表内,SQL语句怎么写?

动态SQL查询案例 需求描述&#xff1a; 原始的表名、表的属性描述信息在summary表中&#xff0c;每个表有类似的字段&#xff1a;id、price、size&#xff0c;通过SQL能查询到所有表的如下记录&#xff1a; 表名、表属性名、最低价格、最低价格对应ID、最大尺寸、最大尺寸对应…

Linux学习之yum安装软件

要是使用rpm安装软件&#xff0c;就需要自己解决依赖包的安装&#xff0c;使用yum进行安装&#xff0c;就可以自动安装依赖包。可以先到阿里云CentOS 镜像网站学习一下如何更改yum源。我这里演示如何更改yum源。 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS…

人像美白的python实现

人像美白在现在的美颜功能里面几乎属于必备的&#xff0c;各家的方案都不太一致&#xff0c;本文主要介绍一种基于肤色分割的人像美白方案。 首先得将人像进行皮肤分割&#xff0c;具体最好是使用AI模型&#xff0c;这里就不展开了&#xff0c;本人侧重点是美白算法&#xff0c…

数据库实验-图书销售管理系统数据库SQL应用编程

一、实验一&#xff1a;图书销售管理系统数据库SQL应用编程 二、实验时间&#xff1a;2023.4.21 三、实验目的 结合图书销售管理系统数据库开发项目案例&#xff0c;开展数据库SQL应用编程实践&#xff0c;培养数据库SQL操作访问、存储过程与触发器处理的数据库编程能力…

(学习日记)2023.04.29

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

从小白到大神之路之学习运维第44天---第三阶段----mysql数据库的主从复制和读写分离

第三阶段基础 时 间&#xff1a;2023年6月28日 参加人&#xff1a;全班人员 内 容&#xff1a; mysql主从复制和读写分离 目录 一、mysql基础 &#xff08;一&#xff09;优点&#xff1a; &#xff08;二&#xff09;类型&#xff1a; &#xff08;三&#xff09;支…

前缀例题(一维二维)

​作者&#xff1a;小妮无语 专栏&#xff1a;暑假基础集训营 &#x1f6b6;‍♀️✌️道阻且长&#xff0c;不要放弃✌️&#x1f3c3;‍♀️ 目录 一维前缀和 二维前缀和 例题1&#xff1a;最大子矩阵 例题2&#xff1a; 激光炸弹 一维前缀和 本题唯一要注意的是数据范…

爬虫工具-替换js文件ReRes插件/Gores插件

目录 一、ReRes插件二、Gores插件 一、ReRes插件 用途&#xff1a;爬虫逆向过程中一些文件需要替换时 ① 原始网站js文件有无限debugger&#xff0c;复制原始网站js文件&#xff0c;删掉无限debugger相关代码保存为新的js文件&#xff1b;用ReRes插件进行替换② 原始网站js文件…

Xcode 14打包flutter 的项目构建失败

升级xcode 后flutter项目构建失败 起因&#xff1a; 升级Xcode 到新的14.3.1版本 错误&#xff1a; showing recent issues command phasescriptexecution failed with a nonzero exit code 这个错误很多情况下都会出现&#xff0c;所以参考价值较低。 解决&#xff1a; …

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 企业员工招聘系统的设计与实现

一.项目介绍 招聘系统将为招聘者和求职者构建一个功能齐全、方便快捷的招聘平台&#xff0c;减少双方投入招聘活动的成本&#xff0c;为招聘求职双方带来便利&#xff0c; 系统将实现如下目标&#xff1a; 1.针对系统内的不同角色&#xff0c;系统能够赋予其不同的操作权限。 …

有了HTTP,为什么还要RPC?

很长时间以来都没有怎么好好搞清楚 RPC&#xff08;即 Remote Procedure Call&#xff0c;远程过程调用&#xff09;和 HTTP 调用的区别&#xff0c;不都是写一个服务然后在客户端调用么&#xff1f;这里请允许我迷之一笑~Naive&#xff01; 本文简单地介绍一下两种形式的 C/S…

粒子群算法PSO优化VMD,适应度函数为最小样本熵或最小包络熵(可自行选择,代码已集成好,很方便修改)包含MATLAB源代码

近期评论区有小伙伴私信需要粒子群优化算法PSO法化VMD的&#xff0c;所以打算再写一篇。 与上一篇灰狼算法优化VMD相似&#xff0c;这篇文章也是以最小样本熵或最小包络熵为适应度函数的&#xff0c;好的&#xff0c;废话不多说&#xff0c;大家不懂得可以看这篇文章。灰狼优化…