From dd8e8254d631888b37083124fc78c6df198c466b Mon Sep 17 00:00:00 2001
From: chen-xin-zhi <3588068430@qq.com>
Date: Fri, 22 Aug 2025 17:18:53 +0800
Subject: [PATCH] update 8.21
---
pom.xml | 6 ++
.../practice/controller/UserController.java | 33 ++++++-
.../com/example/practice/entity/User.java | 87 ++-----------------
.../exception/MoneyNotEnoughException.java | 9 ++
.../example/practice/mapper/UserMapper.java | 6 +-
.../example/practice/service/UserService.java | 10 +++
.../service/impl/UserServiceImpl.java | 34 ++++++++
src/main/resources/application.yml | 4 +
src/main/resources/mapper/UserMapper.xml | 6 ++
9 files changed, 113 insertions(+), 82 deletions(-)
create mode 100644 src/main/java/com/example/practice/exception/MoneyNotEnoughException.java
create mode 100644 src/main/java/com/example/practice/service/UserService.java
create mode 100644 src/main/java/com/example/practice/service/impl/UserServiceImpl.java
diff --git a/pom.xml b/pom.xml
index 42dc25d..d82147c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,6 +79,12 @@
4.4.0
+
+
+ com.baomidou
+ mybatis-plus-spring-boot3-starter
+ 3.5.5
+
diff --git a/src/main/java/com/example/practice/controller/UserController.java b/src/main/java/com/example/practice/controller/UserController.java
index 20fa63e..2d3c577 100644
--- a/src/main/java/com/example/practice/controller/UserController.java
+++ b/src/main/java/com/example/practice/controller/UserController.java
@@ -2,8 +2,12 @@ package com.example.practice.controller;
import com.example.practice.entity.User;
+import com.example.practice.exception.MoneyNotEnoughException;
import com.example.practice.mapper.UserMapper;
+import com.example.practice.service.UserService;
+import com.example.practice.service.impl.UserServiceImpl;
import jakarta.annotation.Resource;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -13,7 +17,25 @@ import java.util.List;
public class UserController {
@Resource
- UserMapper userMapper;
+ private UserMapper userMapper;
+
+
+ @Resource
+ private UserService userService;
+
+
+ /**
+ * A->B转账
+ */
+ @Transactional // 多条DML语句要么同时执行成功,要么同时失败
+ @GetMapping("transfer")
+ public boolean transfer(@RequestParam String fromAccount,
+ @RequestParam String toAccount,
+ @RequestParam int money) {
+
+ return userService.transfer(fromAccount, toAccount, money);
+ }
+
@GetMapping("/queryAll")
public List queryAll() {
@@ -50,6 +72,15 @@ public class UserController {
return userMapper.selectOne(id);
}
+ @GetMapping("pageQuery")
+ public List pageQuery(@RequestParam int pageNum, @RequestParam int pageSize) {
+ int offset = (pageNum - 1) * pageSize;
+ return userMapper.pageQuery(pageSize, offset);
+ }
+
+
+
+
}
diff --git a/src/main/java/com/example/practice/entity/User.java b/src/main/java/com/example/practice/entity/User.java
index 926d45e..f326903 100644
--- a/src/main/java/com/example/practice/entity/User.java
+++ b/src/main/java/com/example/practice/entity/User.java
@@ -1,6 +1,13 @@
package com.example.practice.entity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
public class User {
/**
@@ -38,85 +45,5 @@ public class User {
*/
private Integer money;
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", nickName='" + nickName + '\'' +
- ", phoneNumber='" + phoneNumber + '\'' +
- ", userAccount='" + userAccount + '\'' +
- ", userPassword='" + userPassword + '\'' +
- ", userRole='" + userRole + '\'' +
- ", money=" + money +
- '}';
- }
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getNickName() {
- return nickName;
- }
-
- public void setNickName(String nickName) {
- this.nickName = nickName;
- }
-
- public String getPhoneNumber() {
- return phoneNumber;
- }
-
- public void setPhoneNumber(String phoneNumber) {
- this.phoneNumber = phoneNumber;
- }
-
- public String getUserAccount() {
- return userAccount;
- }
-
- public void setUserAccount(String userAccount) {
- this.userAccount = userAccount;
- }
-
- public String getUserPassword() {
- return userPassword;
- }
-
- public void setUserPassword(String userPassword) {
- this.userPassword = userPassword;
- }
-
- public String getUserRole() {
- return userRole;
- }
-
- public void setUserRole(String userRole) {
- this.userRole = userRole;
- }
-
- public Integer getMoney() {
- return money;
- }
-
- public void setMoney(Integer money) {
- this.money = money;
- }
-
- public User(Long id, String nickName, String phoneNumber, String userAccount, String userPassword, String userRole, Integer money) {
- this.id = id;
- this.nickName = nickName;
- this.phoneNumber = phoneNumber;
- this.userAccount = userAccount;
- this.userPassword = userPassword;
- this.userRole = userRole;
- this.money = money;
- }
-
- public User() {
- }
}
diff --git a/src/main/java/com/example/practice/exception/MoneyNotEnoughException.java b/src/main/java/com/example/practice/exception/MoneyNotEnoughException.java
new file mode 100644
index 0000000..c1aac37
--- /dev/null
+++ b/src/main/java/com/example/practice/exception/MoneyNotEnoughException.java
@@ -0,0 +1,9 @@
+package com.example.practice.exception;
+
+public class MoneyNotEnoughException extends RuntimeException {
+
+ public MoneyNotEnoughException() {
+ super("余额不足");
+ }
+
+}
diff --git a/src/main/java/com/example/practice/mapper/UserMapper.java b/src/main/java/com/example/practice/mapper/UserMapper.java
index 0337595..5a9631d 100644
--- a/src/main/java/com/example/practice/mapper/UserMapper.java
+++ b/src/main/java/com/example/practice/mapper/UserMapper.java
@@ -1,12 +1,13 @@
package com.example.practice.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.practice.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper // 生成当前UserMapper接口的实现类对象,并且把这个对象放到SpringIOC 容器中
-public interface UserMapper {
+public interface UserMapper extends BaseMapper {
List selectAll();
@@ -18,5 +19,8 @@ public interface UserMapper {
int delete(Long id);
+ List pageQuery(int pageSize, int offset);
+
+ User selectByAccount(String userAccount);
}
diff --git a/src/main/java/com/example/practice/service/UserService.java b/src/main/java/com/example/practice/service/UserService.java
new file mode 100644
index 0000000..eec936d
--- /dev/null
+++ b/src/main/java/com/example/practice/service/UserService.java
@@ -0,0 +1,10 @@
+package com.example.practice.service;
+
+public interface UserService {
+
+ /**
+ * 转账功能
+ */
+ boolean transfer(String fromAccount, String toAccount, int money);
+
+}
diff --git a/src/main/java/com/example/practice/service/impl/UserServiceImpl.java b/src/main/java/com/example/practice/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..90a310e
--- /dev/null
+++ b/src/main/java/com/example/practice/service/impl/UserServiceImpl.java
@@ -0,0 +1,34 @@
+package com.example.practice.service.impl;
+
+import com.example.practice.entity.User;
+import com.example.practice.exception.MoneyNotEnoughException;
+import com.example.practice.mapper.UserMapper;
+import com.example.practice.service.UserService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+ @Resource
+ private UserMapper userMapper;
+
+ @Override
+ public boolean transfer(String fromAccount, String toAccount, int money) {
+ User fromUser = userMapper.selectByAccount(fromAccount);
+ Integer fromAccountMoney = fromUser.getMoney();
+ if (money > fromAccountMoney) throw new MoneyNotEnoughException();
+
+ // 更新转出账户的余额
+ fromUser.setMoney(fromAccountMoney - money);
+ userMapper.update(fromUser);
+
+ User toUser = userMapper.selectByAccount(toAccount);
+ Integer toUserMoney = toUser.getMoney();
+
+ // 跟新转入账户的余额
+ toUser.setMoney(toUserMoney + money);
+ userMapper.update(toUser);
+ return true;
+ }
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 60a001f..2720d35 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,3 +8,7 @@ spring:
mybatis:
mapper-locations: classpath:mapper/*.xml
+
+
+server:
+ port: 9090
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index a378f57..315ebe7 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -23,7 +23,13 @@
update user set nickName = #{nickName}, phoneNumber = #{phoneNumber}, userAccount = #{userAccount}, userPassword = #{userPassword}, userRole = #{userRole}, money = #{money} where id = #{id}
+
+
\ No newline at end of file