Article directory
-
- 1. application.yaml configuration
- 2. Unified return class
- 3. UserController.java
- 4. UserService.java
- 5. UserServiceImpl.java
- 6. UserMapper.java
- 7. UserMapper.xml
1. application.yaml configuration
#Server port server: port: 8080 #Data source configuration spring: datasource: url: jdbc:mysql://127.0.0.1:3306/welcome?useSSL=false &useUnicode=true &characterEncoding=utf-8 &zeroDateTimeBehavior=convertToNull &transformedBitIsBoolean=true &tinyInt1isBit= false & amp; allowMultiQueries=true & amp; serverTimezone=GMT+8 & amp; allowPublicKeyRetrieval=true username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver #mybatisconfiguration mybatis: mapper-locations: classpath*:com/**/mapper/*Mapper.xml
2. Unified return class
Result.java:
import lombok.Data; import java.io.Serializable; @Data public class Result<T> implements Serializable { /** * Whether to return success */ private boolean success; /** * error state */ private int code; /*** * error message */ private String msg; /** * return data */ private T data; /** * timestamp */ private long timestamp ; public Result (){ this.timestamp = System.currentTimeMillis(); } /** * successful operation */ public static <T> Result<T> success() { return success(null); } /** * Successful operation, carrying data */ public static <T> Result<T> success(T data){ return success(ResultCode. RC100. getMessage(), data); } /** * Successful operation, carry message */ public static <T> Result<T> success(String message) { return success(message, null); } /** * Successful operation, carry message and carry data */ public static <T> Result<T> success(String message, T data) { return success(ResultCode. RC100. getCode(), message, data); } /** * Successful operation, with custom status code and message */ public static <T> Result<T> success(int code, String message) { return success(code, message, null); } public static <T> Result<T> success(int code, String message, T data) { Result<T> result = new Result<T>(); result. setCode(code); result. setMsg(message); result. setSuccess(true); result. setData(data); return result; } /** * failed operation, default data */ public static <T> Result<T> failure() { return failure(ResultCode. RC100. getMessage()); } /** * Failed operation, with custom message */ public static <T> Result<T> failure(String message) { return failure(message, null); } /** * Fail operation, with custom message and data */ public static <T> Result<T> failure(String message, T data) { return failure(ResultCode. RC999. getCode(), message, data); } /** * Failed operation, with custom status code and custom message */ public static <T> Result<T> failure(int code, String message) { return failure(ResultCode. RC999. getCode(), message, null); } /** * Failed operation, carrying custom status code, message and data */ public static <T> Result<T> failure(int code, String message, T data) { Result<T> result = new Result<T>(); result. setCode(code); result. setMsg(message); result. setSuccess(false); result. setData(data); return result; } /** * Boolean return operation, with default return value */ public static <T> Result<T> decide(boolean b) { return decide(b, ResultCode. RC100. getMessage(), ResultCode. RC999. getMessage()); } /** * Boolean return operation, with custom message */ public static <T> Result<T> decide(boolean b, String success, String failure) { if (b) { return success(success); } else { return failure(failure); } } }
ResultCode.java:
import lombok. Getter; public enum ResultCode { /**Successful operation**/ RC100(100,"The operation was successful"), /**operation failed**/ RC999(999,"Operation failed"), /**Service current limit**/ RC200(200,"The service has enabled current limiting protection, please try again later!"), /**Service downgrade**/ RC201(201,"The service has degraded protection enabled, please try again later!"), /**Hotspot parameter current limit**/ RC202(202, "Hotspot parameter current limit, please try again later!"), /** System rules are not satisfied **/ RC203(203,"The system rules do not meet the requirements, please try again later!"), /**Authorization rules fail**/ RC204(204, "Authorization rule failed, please try again later!"), /**access_denied**/ RC403(403,"No access permission, please contact the administrator to grant permission"), /**access_denied**/ RC401(401,"An exception occurred when an anonymous user accesses a resource without permission"), /**Service exception**/ RC500(500,"The system is abnormal, please try again later"), INVALID_TOKEN(2001,"The access token is invalid"), ACCESS_DENIED(2003,"No permission to access this resource"), CLIENT_AUTHENTICATION_FAILED(1001,"Client authentication failed"), USERNAME_OR_PASSWORD_ERROR(1002,"The username or password is incorrect"), UNSUPPORTED_GRANT_TYPE(1003, "Unsupported authentication mode"); /**Custom status code**/ @Getter private final int code; /** * carry message */ @Getter private final String message; /** * Construction method */ ResultCode(int code, String message) { this.code = code; this. message = message; } }
3. UserController.java
@RequestMapping("/user") @RestController public class UserController { @Resource private UserService userService; /** * Log in * @param uName * @param uPwd * @return */ @PostMapping("/login") public Result<String> login(String uName, String uPwd) { User u = userService.login(uName, uPwd); if (u != null) { return Result.success("login successful"); } return Result.success("Login failed"); } /** * Add user * @param user * @param uCode * @return */ @PostMapping("/add") public Result<String> add(@RequestBody User user, @RequestBody Integer uCode) { if (UserServiceImpl. userCache. contains(uCode)) { return Result.failure("Please log in"); } boolean b = userService. add(uCode, user); if (b) { return Result.success("Added successfully"); } else { return Result.failure("Failed to add"); } } /** * Query all * @return */ @PostMapping("/list") public Result<List<User>> list(Integer uCode) { if (UserServiceImpl. userCache. contains(uCode)) { return Result.failure("Please log in"); } List<User> list = userService. list(); return Result. success(list); } /** * update user * @param user * @param uCode * @return */ @PostMapping("/update") public Result<String> update(@RequestBody User user, @RequestBody Integer uCode) { if (UserServiceImpl. userCache. contains(uCode)) { return Result.failure("Please log in"); } boolean b = userService. updateUser(user, uCode); if (b) { return Result.success("updated successfully"); } else { return Result.failure("Update failed"); } } /** * delete users * @param id * @param uCode * @return */ @GetMapping("/delete") public Result<String> delete(Integer id, Integer uCode) { if (UserServiceImpl. userCache. contains(uCode)) { return Result.failure("Please log in"); } boolean b = userService. delete(id, uCode); if (b) { return Result.success("delete successfully"); } else { return Result.failure("Delete failed"); } } }
4. UserService.java
public interface UserService { /** * Add user * * @param uCode * @param user * @return */ boolean add(Integer uCode, User user); /** * Log in * @return */ User login(String uName, String uPwd); /** * update user * @param user * @param uCode * @return */ boolean updateUser(User user, Integer uCode); /** * delete users * @param id * @param uCode * @return */ boolean delete(Integer id, Integer uCode); /** * Query all * @return */ List<User> list(); }
5. UserServiceImpl.java
@Service public class UserServiceImpl implements UserService{ @Resource private UserMapper userMapper; // Simulate cache - check if the user is logged in public static List<Integer> userCache = new ArrayList<>(); /** * Log in * @return */ @Override public User login(String uName, String uPwd) { User login = userMapper.login(uName, uPwd); if (login != null) { userCache.add(login.getUCode()); } return login; } /** * Add user * * @param uCode * @param user * @return */ @Override public boolean add(Integer uCode, User user) { User operatorUser = userMapper.getUserByUCode(uCode); if (operatorUser. getUType() == 1) { return userMapper. add(user); } return false; } @Override public List<User> list() { return userMapper. list(); } /** * update user * * @param user * @param uCode * @return */ @Override public boolean updateUser(User user, Integer uCode) { User operatorUser = userMapper.getUserByUCode(uCode); if (operatorUser. getUType() == 1) { return userMapper. updateUser(user); } else { if (user. getUCode() == uCode) { return userMapper. updateUser(user); } else { return false; } } } /** * delete users * * @param id * @param uCode * @return */ @Override public boolean delete(Integer id, Integer uCode) { User operatorUser = userMapper.getUserByUCode(uCode); if (operatorUser.getUType() == 1 & amp; & amp; id != uCode) { return userMapper.deleteById(id); } return false; } }
6. UserMapper.java
@Mapper public interface UserMapper { User login(String uName, String uPwd); boolean add(User user); List<User> list(); User getUserByUCode(Integer uCode); boolean updateUser(User user); boolean deleteById(Integer id); }
7. UserMapper.xml
<?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.welcome.mapper.UserMapper"> <select id="login" resultType="com. welcome. entity. User"> SELECT * FROM user WHERE uName = #{uName} AND uPwd = #{uPwd} </select> <insert id="add"> INSERT INTO user(uCode,uName,uPwd,uType,uMemo) VALUES (#{uCode}, #{uName}, #{uPwd}, #{uType}, #{uMemo}) </insert> <update id="updateUser"> UPDATE user SET uName=#{uName}, uPwd=#{uPwd}, uType=#{uType}, uMemo=#{uMemo} WHERE uCode=#{uCode} </update> <delete id="deleteById"> DELETE FROM user WHERE uCode = #{ids} </delete> <select id="getUserByUCode" resultType="com. welcome. entity. User"> SELECT * FROM user WHERE uCode = #{uCode} </select> <select id="list" resultType="com. welcome. entity. User"> SELECT * FROM user </select> </mapper>