From e09987fbbb7bb481218bbecf3fd3ddc83fe0008a Mon Sep 17 00:00:00 2001 From: JACKYMYPERSON <1627832236@qq.com> Date: Mon, 2 Mar 2026 18:04:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=AD=A6=E4=B9=A0nacos?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- order-service/pom.xml | 46 +++++++++++++ .../src/main/java/cn/mayiming/App.java | 19 ++++++ .../mayiming/Controller/OrderController.java | 21 ++++++ .../cn/mayiming/Service/OrderService.java | 17 +++++ .../main/java/cn/mayiming/entity/User.java | 22 +++++++ .../cn/mayiming/feign/UserFeignClient.java | 12 ++++ .../src/main/resources/application.yml | 21 ++++++ .../src/test/java/cn/mayiming/AppTest.java | 38 +++++++++++ pom.xml | 1 + user-service/pom.xml | 12 ++++ .../src/main/java/cn/mayiming/App.java | 3 + .../mayiming/Controller/UserController.java | 21 ++++++ .../java/cn/mayiming/Mapper/UserMapper.java | 65 +++++++++++++++++++ .../java/cn/mayiming/Service/UserService.java | 33 ++++++++++ .../main/java/cn/mayiming/entity/User.java | 22 +++++++ .../src/main/resources/application.yml | 25 ++++++- 16 files changed, 375 insertions(+), 3 deletions(-) create mode 100644 order-service/pom.xml create mode 100644 order-service/src/main/java/cn/mayiming/App.java create mode 100644 order-service/src/main/java/cn/mayiming/Controller/OrderController.java create mode 100644 order-service/src/main/java/cn/mayiming/Service/OrderService.java create mode 100644 order-service/src/main/java/cn/mayiming/entity/User.java create mode 100644 order-service/src/main/java/cn/mayiming/feign/UserFeignClient.java create mode 100644 order-service/src/main/resources/application.yml create mode 100644 order-service/src/test/java/cn/mayiming/AppTest.java create mode 100644 user-service/src/main/java/cn/mayiming/Controller/UserController.java create mode 100644 user-service/src/main/java/cn/mayiming/Mapper/UserMapper.java create mode 100644 user-service/src/main/java/cn/mayiming/Service/UserService.java create mode 100644 user-service/src/main/java/cn/mayiming/entity/User.java diff --git a/order-service/pom.xml b/order-service/pom.xml new file mode 100644 index 0000000..c5781d3 --- /dev/null +++ b/order-service/pom.xml @@ -0,0 +1,46 @@ + + 4.0.0 + + cn.mayiming + javamemories-parent + 1.0-SNAPSHOT + + + order-service + jar + + order-service + http://maven.apache.org + + + UTF-8 + + + + + org.springframework.boot + spring-boot-starter-web + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + diff --git a/order-service/src/main/java/cn/mayiming/App.java b/order-service/src/main/java/cn/mayiming/App.java new file mode 100644 index 0000000..a24ce16 --- /dev/null +++ b/order-service/src/main/java/cn/mayiming/App.java @@ -0,0 +1,19 @@ +package cn.mayiming; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; + +/** + * Hello world! + * + */ +@SpringBootApplication +@EnableFeignClients +public class App +{ + public static void main( String[] args ) + { + SpringApplication.run(App.class, args); + } +} diff --git a/order-service/src/main/java/cn/mayiming/Controller/OrderController.java b/order-service/src/main/java/cn/mayiming/Controller/OrderController.java new file mode 100644 index 0000000..92ff990 --- /dev/null +++ b/order-service/src/main/java/cn/mayiming/Controller/OrderController.java @@ -0,0 +1,21 @@ +package cn.mayiming.Controller; + + +import cn.mayiming.Service.OrderService; +import cn.mayiming.entity.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class OrderController { + + @Autowired + private OrderService orderService; + + @PostMapping("/order") + public User getOrder(@RequestBody User user){ + return orderService.SearchUserbyname(user); + } +} diff --git a/order-service/src/main/java/cn/mayiming/Service/OrderService.java b/order-service/src/main/java/cn/mayiming/Service/OrderService.java new file mode 100644 index 0000000..b9ef406 --- /dev/null +++ b/order-service/src/main/java/cn/mayiming/Service/OrderService.java @@ -0,0 +1,17 @@ +package cn.mayiming.Service; + +import cn.mayiming.entity.User; +import cn.mayiming.feign.UserFeignClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class OrderService { + @Autowired + private UserFeignClient userFeignClient; + + public User SearchUserbyname (User user) { + return userFeignClient.selectByUsername(user); + } + +} diff --git a/order-service/src/main/java/cn/mayiming/entity/User.java b/order-service/src/main/java/cn/mayiming/entity/User.java new file mode 100644 index 0000000..3618d51 --- /dev/null +++ b/order-service/src/main/java/cn/mayiming/entity/User.java @@ -0,0 +1,22 @@ +package cn.mayiming.entity; + +public class User { + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + String username; + String password; +} diff --git a/order-service/src/main/java/cn/mayiming/feign/UserFeignClient.java b/order-service/src/main/java/cn/mayiming/feign/UserFeignClient.java new file mode 100644 index 0000000..5ee2147 --- /dev/null +++ b/order-service/src/main/java/cn/mayiming/feign/UserFeignClient.java @@ -0,0 +1,12 @@ +package cn.mayiming.feign; + +import cn.mayiming.entity.User; +import feign.Param; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; + +@FeignClient(name = "user-service") +public interface UserFeignClient { + @PostMapping("/user") + User selectByUsername(User user); +} diff --git a/order-service/src/main/resources/application.yml b/order-service/src/main/resources/application.yml new file mode 100644 index 0000000..a9021ac --- /dev/null +++ b/order-service/src/main/resources/application.yml @@ -0,0 +1,21 @@ +server: + port: 9092 +spring: + application: + name: order-service + cloud: + nacos: + # 服务注册发现配置 + discovery: + server-addr: localhost:8848 # Nacos 服务地址(默认端口 8848) + namespace: public # 命名空间(默认 public,自定义需先在 Nacos 控制台创建) + group: DEFAULT_GROUP # 分组(默认 DEFAULT_GROUP) + service: order-service # 注册到 Nacos 的服务名(建议和子项目 artifactId 一致) + # 配置管理配置(如果引入了 config 依赖才需要) + config: + server-addr: localhost:8848 # 和 discovery 一致 + file-extension: yaml + namespace: public + group: DEFAULT_GROUP + config: + import: nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}?server-addr=${spring.cloud.nacos.config.server-addr} \ No newline at end of file diff --git a/order-service/src/test/java/cn/mayiming/AppTest.java b/order-service/src/test/java/cn/mayiming/AppTest.java new file mode 100644 index 0000000..2244532 --- /dev/null +++ b/order-service/src/test/java/cn/mayiming/AppTest.java @@ -0,0 +1,38 @@ +package cn.mayiming; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/pom.xml b/pom.xml index f9c25c4..3d12727 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,7 @@ javamemories-common user-service + order-service diff --git a/user-service/pom.xml b/user-service/pom.xml index 2408678..64a78df 100644 --- a/user-service/pom.xml +++ b/user-service/pom.xml @@ -36,6 +36,18 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + + + + com.mysql + mysql-connector-j + runtime + diff --git a/user-service/src/main/java/cn/mayiming/App.java b/user-service/src/main/java/cn/mayiming/App.java index c7fb9fb..48c58d1 100644 --- a/user-service/src/main/java/cn/mayiming/App.java +++ b/user-service/src/main/java/cn/mayiming/App.java @@ -1,6 +1,7 @@ package cn.mayiming; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -8,7 +9,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * Hello world! * */ + @SpringBootApplication +@MapperScan("cn.mayiming.Mapper") public class App { public static void main( String[] args ) diff --git a/user-service/src/main/java/cn/mayiming/Controller/UserController.java b/user-service/src/main/java/cn/mayiming/Controller/UserController.java new file mode 100644 index 0000000..a53b05c --- /dev/null +++ b/user-service/src/main/java/cn/mayiming/Controller/UserController.java @@ -0,0 +1,21 @@ +package cn.mayiming.Controller; + +import cn.mayiming.Mapper.UserMapper; +import cn.mayiming.Service.UserService; +import cn.mayiming.entity.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class UserController { + + @Autowired + private UserMapper userMapper; + + @PostMapping("/user") + public User getUser(@RequestBody User user) { + return userMapper.selectByUsername(user.getUsername()); + } +} diff --git a/user-service/src/main/java/cn/mayiming/Mapper/UserMapper.java b/user-service/src/main/java/cn/mayiming/Mapper/UserMapper.java new file mode 100644 index 0000000..65232fa --- /dev/null +++ b/user-service/src/main/java/cn/mayiming/Mapper/UserMapper.java @@ -0,0 +1,65 @@ +package cn.mayiming.Mapper; + +import cn.mayiming.entity.User; +import org.apache.ibatis.annotations.*; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface UserMapper { + /** + * 根据ID查询用户 + * @param id 用户ID + * @return 用户信息 + */ + @Select("SELECT id, username, password, nickname FROM user WHERE id = #{id}") + User selectById(@Param("id") Integer id); // 注意:id类型改为Integer(对应表的int) + + /** + * 根据用户名查询用户 + * @param username 用户名 + * @return 用户信息 + */ + @Select("SELECT id, username, password, nickname FROM user WHERE username = #{username}") + User selectByUsername(@Param("username") String username); + + /** + * 新增用户(自动回填自增ID) + * @param user 用户对象 + * @return 影响行数 + */ + @Insert("INSERT INTO user (username, password, nickname) " + + "VALUES (#{username}, #{password}, #{nickname})") + // 适配int类型自增主键,keyProperty对应实体类的id属性 + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + int insert(User user); + + /** + * 更新用户信息(全字段更新) + * @param user 用户对象(含要更新的字段) + * @return 影响行数 + */ + @Update("UPDATE user SET " + + "username = #{username}, " + + "password = #{password}, " + + "nickname = #{nickname} " + + "WHERE id = #{id}") + int updateById(User user); + + /** + * 删除用户 + * @param id 用户ID + * @return 影响行数 + */ + @Delete("DELETE FROM user WHERE id = #{id}") + int deleteById(@Param("id") Integer id); + + /** + * 查询所有用户 + * @return 用户列表 + */ + @Select("SELECT id, username, password, nickname FROM user") + List selectAll(); + +} diff --git a/user-service/src/main/java/cn/mayiming/Service/UserService.java b/user-service/src/main/java/cn/mayiming/Service/UserService.java new file mode 100644 index 0000000..5f64e49 --- /dev/null +++ b/user-service/src/main/java/cn/mayiming/Service/UserService.java @@ -0,0 +1,33 @@ +package cn.mayiming.Service; + +import cn.mayiming.Mapper.UserMapper; +import cn.mayiming.entity.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserService { + @Autowired + private UserMapper userMapper; + + public int addUser() { + User user = new User(); + user.setUsername("test01"); + user.setPassword("123456"); + // 新增后id会自动回填 + int rows = userMapper.insert(user); + return rows; + } + + // 根据用户名查询 + public User getUserByUsername(String username) { + return userMapper.selectByUsername(username); + } + + // 查询所有用户 + public List getAllUsers() { + return userMapper.selectAll(); + } +} diff --git a/user-service/src/main/java/cn/mayiming/entity/User.java b/user-service/src/main/java/cn/mayiming/entity/User.java new file mode 100644 index 0000000..3618d51 --- /dev/null +++ b/user-service/src/main/java/cn/mayiming/entity/User.java @@ -0,0 +1,22 @@ +package cn.mayiming.entity; + +public class User { + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + String username; + String password; +} diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index 68be9a8..0fb6c7f 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 9090 + port: 9091 spring: application: name: user-service @@ -14,8 +14,27 @@ spring: # 配置管理配置(如果引入了 config 依赖才需要) config: server-addr: localhost:8848 # 和 discovery 一致 - file-extension: yaml # 配置文件格式(yaml/yml/properties) + file-extension: yaml namespace: public group: DEFAULT_GROUP config: - import: nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}?server-addr=${spring.cloud.nacos.config.server-addr} \ No newline at end of file + import: nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}?server-addr=${spring.cloud.nacos.config.server-addr} + datasource: + # 数据库驱动类(MySQL 8.x 用 com.mysql.cj.jdbc.Driver,5.x 用 com.mysql.jdbc.Driver) + driver-class-name: com.mysql.cj.jdbc.Driver + # 数据库连接 URL(替换为你的数据库地址、端口、库名,如 user_db) + url: jdbc:mysql://rm-f8z6oc5a03331500p8o.mysql.rds.aliyuncs.com:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + # 数据库用户名(默认 root,根据实际情况修改) + username: root + # 数据库密码(替换为你的 MySQL 密码) + password: Root123456 + # 可选:连接池配置(推荐使用 HikariCP,Spring Boot 2.x 默认) + hikari: + # 连接池最大连接数 + maximum-pool-size: 10 + # 连接池最小空闲连接数 + minimum-idle: 2 + # 连接超时时间(毫秒) + connection-timeout: 30000 + # 连接最大存活时间(毫秒) + max-lifetime: 1800000 \ No newline at end of file