Springboot+mysql对用户信息的增删改查

本文详细介绍了一个用户管理系统API的实现过程,包括用户注册、登录、密码修改、用户信息查询及删除等功能。文章深入解析了Controller层的业务逻辑实现,如密码加密、用户验证等,并展示了如何通过RESTful API提供这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Controler层-服务:业务逻辑实现

    public User addUser(User user) {
        String passwordHash =  passwordToHash(user.getPassword());
        user.setPassword(passwordHash);
        userMapper.add(user);
        return findByUserId(user.getId());
    }
    public User updatePassword(User user) {
        userMapper.updatePassword(user);
        return user;
    }

    public List<User> allUser() {
        List<User>  userList =  userMapper.findAll();
        return userList;
    }

    public int deleteUser(User user) {
        int result =   userMapper.deleteUser(user);
        return result;
    }

    public String passwordToHash(String password) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-256");
            digest.update(password.getBytes());
            byte[] src = digest.digest();
            StringBuilder stringBuilder = new StringBuilder();
            for (byte aSrc : src) {
                String s = Integer.toHexString(aSrc & 0xFF);
                if (s.length() < 2) {
                    stringBuilder.append('0');
                }
                stringBuilder.append(s);
            }
            return stringBuilder.toString();
        } catch (NoSuchAlgorithmException ignore) {
        }
        return null;
    }

    public User findByUserId(int id) {
        User user = new User();
        user.setId(id);
        return userMapper.findOne(user);
    }

    public User findByUserName(String name) {
        User param = new User();
        param.setName(name);
        return userMapper.findOne(param);
    }

    public boolean comparePassword(User user, User userInDataBase) {
        return passwordToHash(user.getPassword())
                .equals(userInDataBase.getPassword());
    }

 

2.表现层-接口:对外API接口


    @RequestMapping("/api/addUser")
    @PostMapping("")
    public Object add(@RequestBody User user) {
        JSONObject jsonObject = new JSONObject();
        if (userService.findByUserName(user.getName()) != null) {
            jsonObject.put("error","用户名重复");
            return jsonObject;
        }else {
            userService.addUser(user);
            String token = userService.getToken(user);
            jsonObject.put("token", token);
            jsonObject.put("result",0);
            return jsonObject;
        }


    }

    @RequestMapping("/api/authenticationUser")
    @PostMapping("")
    public Object login(@RequestBody User user) {
        User userInDataBase = userService.findByUserName(user.getName());
        JSONObject jsonObject = new JSONObject();
        if (userInDataBase == null) {
            jsonObject.put("message", "用户不存在");
        } else if (!userService.comparePassword(user, userInDataBase)) {
            jsonObject.put("message", "密码不正确");
        } else {
            String token = userService.getToken(userInDataBase);
            jsonObject.put("token", token);
            jsonObject.put("result",0);
        }
        return jsonObject;
    }

    @RequestMapping("/api/updateUser")
    @PostMapping("")
    public Object updateUser(@RequestBody User user) {
        User userInDataBase = userService.findByUserName(user.getName());
        JSONObject jsonObject = new JSONObject();
        if (userInDataBase == null) {
            jsonObject.put("message", "用户不存在");
        } else if (!userService.comparePassword(user, userInDataBase)) {
            jsonObject.put("message", "密码不正确");
        } else if (user.getPassword().equals(user.getNewPassword())) {
            jsonObject.put("message", "新旧密码不允许相同");
        }else {
            String passwordHash =  userService.passwordToHash(user.getNewPassword());
            user.setPassword(passwordHash);
            user.setId(userInDataBase.getId());
            userService.updatePassword(user);
            User updateUserInDataBase = userService.findByUserName(userInDataBase.getName());
            String token = userService.getToken(updateUserInDataBase);
            jsonObject.put("token", token);
            jsonObject.put("result",0);
        }
        return jsonObject;
    }

    @RequestMapping("/api/allUser")
    @GetMapping("")
    public Object allUser() {
        List<User> userInDataBase = userService.allUser();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("user", userInDataBase);
        jsonObject.put("result",0);
        return jsonObject;
    }

    @RequestMapping("/api/deleteUser")
    @PostMapping("")
    public Object deleteUser(@RequestBody User user) {
        JSONObject jsonObject = new JSONObject();
        User userInDataBase = userService.findByUserName(user.getName());
        user.setId(userInDataBase.getId());
        int result = userService.deleteUser(user);
        if (result == 1){
            jsonObject.put("message", "删除成功");
            jsonObject.put("result",0);
        }else {
            jsonObject.put("message", "删除异常");
            jsonObject.put("result",result);
        }
        return jsonObject;
    }

    @GetMapping("{id}")
    public Object findById(@PathVariable int id) {
        return userService.findByUserId(id);
    }

 

3.Model层-实体类:映射数据库中字段

public class User {
    private Integer id;
    private String name;
    private String password;
    private String newPassword;



    // 下面是 getter 和 setter 方法。。。
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {return name; }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNewPassword() {
        return newPassword;
    }

    public void setNewPassword(String newPassword) {
        this.newPassword = newPassword;
    }
}

4.Model层-数据库:mybatis数据层

//mapper层:操作数据库
public interface UserMapper {
//用户注册
    int add(User user);
//查找用户是否已存在
    User findOne(User user);
//更新用户密码
    void updatePassword(User user);
//查询所有用户信息
    List<User> findAll();
//删除用户
    int deleteUser(User user);
}
    <insert id="add" useGeneratedKeys="true" keyProperty="id">
        insert into user(name, password) values (#{name},#{password})
    </insert>

    <select id="findOne" resultType="User">
        select * from user
        <where>
            <!-- 重复说一下,id 不能是 int,int 默认是 0,不可能是 null, 而 Integer 可以是 null-->
            <if test="id!=null">
                id=#{id}
            </if>
            <if test="name!=null">
                name=#{name}
            </if>
        </where>
    </select>

    <update id="updatePassword" parameterType="com.hpm.blog.model.User">
        UPDATE user
        <trim prefix="set" suffixOverrides=",">
            <if test="password!=null">password=#{password},</if>
        </trim>
        WHERE id=#{id}
    </update>

    <select id="findAll" resultType="User">
        select * from user
    </select>

    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{id}
    </delete>

 

5.接口调用测试

注册

登录

改密

删除

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值