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

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.接口调用测试

注册

登录

改密

删除

猜你喜欢

转载自blog.csdn.net/sunhuansheng/article/details/84099823