会员中心微服务

文章目录

    • 1.环境配置
        • 1.创建会员中心模块
        • 2.检查父子模块的pom.xml
          • 1.父模块
            • 注意:如果父模块中的依赖显示not found,原因是子模块并没有引用,不用在意
          • 2.子模块
        • 3.pom.xml 引入相关依赖(别忘记刷新maven)
        • 4.application.yml 进行基本配置
        • 5.com/sun/springcloud/MemberApplication.java 编写主程序测试
        • 6.出现两个问题
          • 1.端口冲突,所以这里换一个端口为10001,将子模块名也一并修改!
          • 2.数据库没创建
        • 7.使用云数据库
          • 1.数据库表设计
          • 2.修改application.yml 的port,name以及数据库配置
          • 3.执行主程序测试
    • 2.代码编写
        • 1.com/sun/springcloud/entity/Member.java 创建实体类
        • 2.com/sun/springcloud/util/Result.java 封装响应结果的工具类
        • 3.编写dao层
          • 1.com/sun/springcloud/dao/MemberDao.java 编写Mapper接口并注入容器
          • 2.mapper/MemberMapper.xml 编写Mapper实现类
          • 3.com/sun/springcloud/MemberApplicationTest.java 测试dao层
        • 4.编写service层
          • 1.com/sun/springcloud/service/MemberService.java 编写service接口
          • 2.com/sun/springcloud/service/Impl/MemberServiceImpl.java 编写service实现类并注入容器
          • 3.测试service层
        • 5.编写controller层
          • 1.com/sun/springcloud/controller/MemberController.java 编写controller
          • 2.postman测试

1.环境配置

1.创建会员中心模块

image-20240322113235884

2.检查父子模块的pom.xml
1.父模块
注意:如果父模块中的依赖显示not found,原因是子模块并没有引用,不用在意

image-20240322113712318

2.子模块

image-20240322113535868

3.pom.xml 引入相关依赖(别忘记刷新maven)
    <dependencies><!-- springboot web starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 如果在子工程/模块指定了 version,则以指定为准 --></dependency><!-- 1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息等2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. --><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!-- druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><!-- 这里我们重新指定一下 version 因为父项目中没有对这个依赖进行版本仲裁--><version>1.1.13</version></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- jdbc --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
4.application.yml 进行基本配置
server:port: 10000 # 配置服务端口
spring:application:name: member-service-provider-10000 # 配置服务的名称,名字任意这里与项目名保持一致datasource:type: com.alibaba.druid.pool.DruidDataSource# 别忘记创建数据库之后修改数据库名称url: jdbc:mysql://localhost:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8username: rootpassword: root
mybatis:mapper-locations: classpath:mapper/*.xml # 扫描所有Mapper.xmltype-aliases-package: com.sun.springcloud.entity # 扫描所有实体类,可以直接使用类名来标识
5.com/sun/springcloud/MemberApplication.java 编写主程序测试
package com.sun.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Description:** @Author sun* @Create 2024/3/22 12:49* @Version 1.0*/
@SpringBootApplication
public class MemberApplication {public static void main(String[] args) {SpringApplication.run(MemberApplication.class, args);}
}
6.出现两个问题
1.端口冲突,所以这里换一个端口为10001,将子模块名也一并修改!

image-20240323101726428

2.数据库没创建

image-20240323101910525

7.使用云数据库
1.数据库表设计
CREATE DATABASE e_commerce_center_db;
USE e_commerce_center_db;
CREATE TABLE member
(id BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',NAME VARCHAR(64) COMMENT '用户名',pwd CHAR(32) COMMENT '密码',mobile VARCHAR(20) COMMENT '手机号码',email VARCHAR(64) COMMENT '邮箱',gender TINYINT COMMENT '性别', PRIMARY KEY (id)
);
INSERT INTO member VALUES(NULL, 'smith', MD5('123'), '123456789000', 'smith@sohu.com', 1);
SELECT * from member;
2.修改application.yml 的port,name以及数据库配置
server:port: 10001 # 配置服务端口
spring:application:name: member-service-provider-10001 # 配置服务的名称,名字任意这里与项目名保持一致datasource:type: com.alibaba.druid.pool.DruidDataSource# 别忘记创建数据库之后修改数据库名称url: 你连接数据库的urlusername: sdfsdfsdpassword: 88888
mybatis:mapper-locations: classpath:mapper/*.xml # 扫描所有Mapper.xmltype-aliases-package: com.sun.springcloud.entity # 扫描所有实体类,可以直接使用类名来标识
3.执行主程序测试

image-20240323110603378

2.代码编写

1.com/sun/springcloud/entity/Member.java 创建实体类
package com.sun.springcloud.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;/*** Description:** @Author sun* @Create 2024/3/23 11:10* @Version 1.0*/@AllArgsConstructor
@NoArgsConstructor
@Data
//Serializable 加上,后面可能使用
public class Member implements Serializable {private Long id;private String name;private String pwd;private String mobile;private String email;private Integer gender;
}
2.com/sun/springcloud/util/Result.java 封装响应结果的工具类
package com.sun.springcloud.util;/*** Description: 用于返回结果, 利于 json 格式** @Author sun* @Create 2024/3/23 11:12* @Version 1.0*/public class Result<T> {private String code;private String msg;private T data;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;}public Result() {}public Result(T data) {this.data = data;}public static Result success() {Result result = new Result<>();result.setCode("200");result.setMsg("success");return result;}public static <T> Result<T> success(T data) {Result<T> result = new Result<>(data);result.setCode("200");result.setMsg("success");return result;}public static <T> Result<T> success(String msg, T data) {Result<T> result = new Result<>(data);result.setCode("200");result.setMsg(msg);return result;}public static Result error(String code, String msg) {Result result = new Result();result.setCode(code);result.setMsg(msg);return result;}public static <T> Result<T> error(String code, String msg, T data) {Result<T> result = new Result<>(data);result.setCode(code);result.setMsg(msg);return result;}
}
3.编写dao层
1.com/sun/springcloud/dao/MemberDao.java 编写Mapper接口并注入容器
package com.sun.springcloud.dao;import com.sun.springcloud.entity.Member;
import org.apache.ibatis.annotations.Mapper;/*** Description: 对member表进行操作** @Author sun* @Create 2024/3/23 21:06* @Version 1.0*/
@Mapper // 注入容器
public interface MemberDao {/*** 根据id进行查询* @param id* @return 查询成功返回Member对象,查询失败返回null*/public Member queryMemberById(Long id);/*** 保存一条记录* @param member* @return 返回受影响的行数*/public int save(Member member);
}
2.mapper/MemberMapper.xml 编写Mapper实现类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.sun.springcloud.dao.MemberDao"><resultMap id="BaseResultMap" type="Member"><id column="id" property="id" jdbcType="BIGINT"></id><id column="name" property="name" jdbcType="VARCHAR"></id><id column="pwd" property="pwd" jdbcType="VARCHAR"></id><id column="mobile" property="mobile" jdbcType="VARCHAR"></id><id column="email" property="email" jdbcType="VARCHAR"></id><id column="gender" property="gender" jdbcType="TINYINT"></id></resultMap><select id="queryMemberById" parameterType="Long" resultMap="BaseResultMap">select * from `member` where `id` = #{id}</select><!-- useGeneratedKeys="true" keyProperty="id" 表示插入之后将自增的主键id的值返回到Member对象中 --><insert id="save" parameterType="Member" useGeneratedKeys="true" keyProperty="id">INSERT INTO `member` VALUES(NULL, #{name}, MD5(#{pwd}), #{mobile}, #{email}, #{gender});</insert>
</mapper>
3.com/sun/springcloud/MemberApplicationTest.java 测试dao层
package com.sun.springcloud;import com.sun.springcloud.dao.MemberDao;
import com.sun.springcloud.entity.Member;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;/*** Description:** @Author sun* @Create 2024/3/23 21:46* @Version 1.0*/
@SpringBootTest
@Slf4j
public class MemberApplicationTest {@Resourceprivate MemberDao memberDao;@Testpublic void queryMemberById() {Member member = memberDao.queryMemberById(1L);log.info("member={}", member);}@Testpublic void save() {Member member = new Member();member.setName("sun");member.setPwd("12121");member.setMobile("2342343");member.setEmail("123@qq.com");member.setGender(0);int save = memberDao.save(member);Assert.assertEquals(1, save);}
}

image-20240323215932670

4.编写service层
1.com/sun/springcloud/service/MemberService.java 编写service接口
package com.sun.springcloud.service;import com.sun.springcloud.entity.Member;/*** Description: 对member表进行操作的service** @Author sun* @Create 2024/3/23 22:02* @Version 1.0*/
public interface MemberService {/*** 根据id获取一条记录** @param id* @return 成功返回member对象,失败返回null*/public Member queryMemberById(Long id);/*** 保存一条记录** @param member* @return 成功返回1,失败返回0*/public int save(Member member);}
2.com/sun/springcloud/service/Impl/MemberServiceImpl.java 编写service实现类并注入容器
package com.sun.springcloud.service.Impl;import com.sun.springcloud.dao.MemberDao;
import com.sun.springcloud.entity.Member;
import com.sun.springcloud.service.MemberService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;/*** Description: member表的service实现类** @Author sun* @Create 2024/3/23 22:05* @Version 1.0*/
@Service // 注入容器
public class MemberServiceImpl implements MemberService {@Resource // 依赖注入memberdaoprivate MemberDao memberDao;@Overridepublic Member queryMemberById(Long id) {return memberDao.queryMemberById(id);}@Overridepublic int save(Member member) {return memberDao.save(member);}
}
3.测试service层
    @Testpublic void queryMemberById2() {Member member = memberService.queryMemberById(1L);log.info("member={}", member);}@Testpublic void save2() {Member member = new Member();member.setName("sun");member.setPwd("12121");member.setMobile("2342343");member.setEmail("123@qq.com");member.setGender(0);int save = memberService.save(member);Assert.assertEquals(1, save);}

image-20240323221243863

5.编写controller层
1.com/sun/springcloud/controller/MemberController.java 编写controller
package com.sun.springcloud.controller;import com.sun.springcloud.entity.Member;
import com.sun.springcloud.service.MemberService;
import com.sun.springcloud.util.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;/*** Description: member表的控制器** @Author sun* @Create 2024/3/23 22:24* @Version 1.0*/
@RestController
@Slf4j
public class MemberController {@Resource // 注入serviceprivate MemberService memberService;/*** 根据前端传进来的json数据插入一条记录** @param member json类型的member对象数据* @return 返回json类型的响应*/@PostMapping("/member/save")public Result save(@RequestBody Member member) {int save = memberService.save(member);if (save > 0) {return Result.success("添加会员成功!", save);} else {return Result.error("401", "添加会员失败");}}/*** 根据id来获取某个会员的信息** @param id 使用路径参数的形式传入参数* @return 返回json格式的数据*/@GetMapping("/member/get/{id}") // 这里使用的路径参数public Result getMemberById(@PathVariable("id") Long id) {Member member = memberService.queryMemberById(id);if (member != null) {return Result.success("查询成功!", member);} else {return Result.error("402", "ID= " + id + "不存在");}}
}
2.postman测试

image-20240323223620845

image-20240323225016196

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习预测气候变化对产量的影响

通过机器学习预测作物产量 今天分享一篇文献解读&#xff0c;将围绕论文《结合机器学习和环境变量约束气候变化下作物产量变化预测的不确定性》展开,该研究通过将动态线性模型(DLM)和随机森林机器学习模型(RF)分别与9个全球网格作物模型(GGCM)集成来整合和克服这两种建模框架的…

webpack练习之手写loader

手写一个style-loader来把样式文件插入head里面&#xff0c;准备工作 vue webpack就自己弄了&#xff0c;webpack的一些配置也自己配置好 一、创建index.css文件 .box{width: 100px;height: 100px;background-color: red; }然后在vue的main.js文件中引入它 二、创建自定义l…

jmeter二次开发发送java请求_保姆级教程!!!

一、引言 JMeter是Apache基金会开发的一款开源性能测试工具,广泛应用于软件性能测试领域。它能够模拟多线程并发用户对应用程序进行压力测试,以评估应用程序的性能和稳定性。然而,在实际使用过程中,用户可能会遇到需要发送Java请求的场景,例如测试Java Web应用程序或其他…

【Monero】Wallet RPC | Wallet CLI | 门罗币命令行查询余额、种子、地址等命令方法教程

ubuntu22.04 首先在运行daemon&#xff0c;详细安装运行教程可参考&#xff1a;The Monero daemon (monerod) ./monerodWallet CLI run ./monero-wallet-cli如果还没有钱包就根据提示创建钱包即可 输入密码 查询余额 balance查询种子 seed其他可执行命令操作&#xff1…

拌合楼管理软件开发(十一) 海康威视车牌识别摄像头安装调试,总算是跑通了。

前言&#xff1a;总算是调测通了 话接上回&#xff0c;车牌识别摄像头买回来了&#xff0c;卡在电源上了&#xff0c;今天抽时间把电源问题解决了&#xff0c;开始代码正式的调测。一切还算顺利了&#xff0c;没有再碰到打脸的事情了。 一、电源接线&#xff1a; 如同前面预想的…

selenium元素定位--xpath定位--层级与逻辑组合定位

其他元素非唯一时&#xff0c;又不想用xpath绝对定位时&#xff0c;需要用到层级与逻辑定位. 一、层级属性结合定位&#xff1a; 遇到元素没有class、name、id等或属性动态变化情况时&#xff0c;可以找父节点元素&#xff0c;父级节点没有id时&#xff0c;可以继续往上找id&…

linux在使用重定向写入文件时(使用标准C库函数时)使处理信号异常(延时)--问题分析

linux在使用重定向写入文件时(使用标准C库函数时)使处理信号异常(延时)–问题分析 在使用alarm函数进行序号处理测试的时候发现如果把输出重定向到文件里面会导致信号的处理出现严重的延迟(ubuntu18) #include <stdio.h> #include <stdlib.h> #include <unist…

UE5 C++ 3D血条 响应人物受伤 案例

一.3Dwidget 1.创建C Userwidget的 MyHealthWidget&#xff0c;声明当前血量和最大血量 UCLASS() class PRACTICEC_API UMyHealthWidget : public UUserWidget {GENERATED_BODY() public:UPROPERTY(EditAnywhere,BlueprintReadWrite,Category "MyWidget")float C…

Ubuntu连不上外网的问题—ping不通baidu.com

一、问题 虚拟机不能联网&#xff0c;ping百度时候出现这个问题 book100ask:~$ ping www.baidu.com ping: www.baidu.com: Name or service not known 二、解决办法 首先&#xff0c;定位问题&#xff0c;再问我出现的问题中&#xff0c;认为是NAT设置的问题&#xff0c;只要…

【Frida】【Android】02_JAVA层HOOK

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

matlab编译成jar包

1、输入deploytool命令 2、选择Library Compiler 3、配置打包 4、有效文件 5、java函数调用 package com.beescloud.frame.matlab;import com.mathworks.toolbox.javabuilder.MWException; import test.Class1;public class MatlabTest {public static void main(String[] arg…

PanTools v1.0.17 多网盘批量管理 批量分享、转存、复制...

软件介绍 一款针对多个热门网盘的文件管理、批量分享、批量转存、批量复制、批量重命名、批量链接检测、跨账号移动文件、多账号文件搜索等&#xff0c;支持不同网盘的不同账号的资源文件操作。适用于网站站长、资源爱好者等&#xff0c;对于管理名下具有多个网盘多个账号具有…

UI风格汇:卡通风格(Cartoon Style),极具辨识度的风格

一、卡通风格的特点 卡通风格是一种在UI设计中常见的设计风格&#xff0c;它以卡通或漫画的形式呈现&#xff0c;具有夸张、可爱、幽默和生动的特点。卡通风格的UI设计通常使用明亮的色彩、简化的图形和夸张的表情来表达信息和情感。 以下是卡通风格在UI设计中的一些特点&…

【数字图像处理】改变图像灰度级别

改变图像灰度级别 首先&#xff0c;对原始图像 O O O进行灰度级量化: q int ⁡ ( O 2 i ) 2 i , q\operatorname{int}\left(\frac{O}{2^{i}}\right) \times 2^{i}, qint(2iO​)2i, 灰度级别256&#xff0c;128&#xff0c;64&#xff0c;32&#xff0c;16&#xff0c;8&…

是德科技KEYSIGHT MSOX2024A混合信号示波器

181/2461/8938产品概述&#xff1a; Keysight MSOX2024A 提供适合您预算的入门级价位&#xff0c;以及同类任何其他示波器所不具备的卓越性能和可选功能。凭借是德科技设计的 MegaZoom IV 定制 ASIC 技术&#xff0c;它每秒可提供高达 200,000 个波形。通过这种速度&#xff0…

Typescript语法总结

#Typescript 解决了什么问题 Typescript本质上是在 JavaScript 上增加一套静态类型系统&#xff08;编译时进行类型分析&#xff09;&#xff0c;强调静态类型系统是为了和运行时的类型检查机制做区分&#xff0c;TypeScript 的代码最终会被编译为 JavaScript。 Typescript 创造…

Multimodal Chain-of-Thought Reasoning in Language Models阅读笔记

论文&#xff08;2023年&#xff09;链接&#xff1a;https://arxiv.org/pdf/2302.00923.pdf GitHub项目链接&#xff1a;GitHub - amazon-science/mm-cot: Official implementation for "Multimodal Chain-of-Thought Reasoning in Language Models" (stay tuned a…

QToolButton的工具提示出现自身border-image背景图的问题解决

用QToolButton贴个图片&#xff0c;用来做个指示灯&#xff0c;当鼠标移动到指示灯&#xff0c;弹出工具提示&#xff0c;以便提示该灯用来干嘛的。预想像下面那样&#xff1a; 然而结果却如下&#xff1a; 在Qt Designer或代码中对该QToolButton设置样式表如下&#xff1a; QT…

中国国内怎么使用订阅升级Duolingo多邻国plus?多邻国使用教程

多邻国Duolingo合租平台&#xff0c;环球巴士 首单9折优惠码&#xff1a;110072 多邻国Duolingo是什么&#xff0c;能用来做什么&#xff1f; 众所周知&#xff0c;多邻国考试的性价比非常高&#xff0c;不仅考试时间短&#xff0c;出分也很快&#xff0c;国际认可度越来越高…

无人机采集图像的相关知识

1.飞行任务规划 一般使用飞行任务规划软件进行飞行任务的设计&#xff0c;软件可以自动计算相机覆盖和图像重叠情况。比如ArduPilot (ArduPilot - Versatile, Trusted, Open) 和UgCS (http://www.ugcs.com)是两个飞行任务规划软件&#xff0c;可以适用大多数无人机系统。 2.图…