美文网首页
SpringBoot+MyBatis做注册接口,抛弃mapper

SpringBoot+MyBatis做注册接口,抛弃mapper

作者: wzapp | 来源:发表于2021-03-07 09:21 被阅读0次

    第一章我们讲的项目创建,结构分析,mysql配置,登陆功能,这里直接说注册的实现方法

    首先看下登陆controller代码

        @PostMapping("login")
        public BaseResult login(@RequestParam(value = "user", defaultValue = "") String user,
                                @RequestParam(value = "pass", defaultValue = "") String pass) {
            if (user.equals("")) return new BaseResult(400, "账号必须传!", "");
            if (pass.equals("")) return new BaseResult(400, "密码必须传!", "");
            User user1 = mapper.login(user, pass);
            if (user1 == null) return new BaseResult(500, "账号密码不正确!", "");
            user1.setPass("");
            return new BaseResult(200, "", user1);
        }
    

    我们发现,一个参数写一个变量接受,这样太过于繁琐,如果注册表需要传10多个甚至20多个参数的时候,controller显得非常蠢笨,所以我们讲一个新的接受参数的办法,用于简化以上代码实现注册功能

    编写mapeer文件实现注册,由于还是操作user表,所以还是在UserMapper中操作

        @Insert("insert into user (user, pass) values (#{user}, #{pass})")
        int register(User bean);
    

    新增,修改,删除操作,返回值全部为int,返回受影响行数,如果=0则代表操作失败

    编写controller文件实现注册,由于还是操作user表,所以还是在UserController中操作

    @PostMapping
        public BaseResult register(User user) {
            if (user == null || user.getUser() == null || user.getPass() == null) return new BaseResult(400, "参数不正确", "");
    
            if (mapper.findByUser(user.getUser()) != null) return new BaseResult(500, "账号已经注册", "");//由于登录账号是唯一的,查询是否存在,如果存在则拦截注册,给出错误提示
    
            if (mapper.register(user) == 0) return new BaseResult(500, "注册失败", "");
            return new BaseResult(200, "", "注册成功!");
        }
    

    大家可以发现,我方法接收了一个user对象,但是没有添加@RequestParam(value = "user", defaultValue = "") 注解,这就是我们要说的新的接收参数方法

    前台用form-data方式传参时,后台可以用实体类接收,把前台传入的参数自动转到实体类中,多余的参数不接收,这种方法可以简化参数过多的问题,大家也可以用json字符串来接收

    @PostMapping("login")
    @PostMapping
    

    但是大家发现,我的controller现在有两个方法,一个登陆,一个注册,为什么我的注册比登陆少了几个东西呢?

    原因是因为,当前台访问一个controller的时候,如果这个controller中只有一个该请求方法,比如现在前台请求post地址为:http://localhost:8080/user

    后台接收到请求会自动在UserController中找到所有post的方法,由于我们没有指定请求哪个方法,所以默认请求@PostMapping的方法而不是@PostMapping("login")

    通过上方我们知道,一个controller中,当这个请求方式只有一个方法的时候则不需要指定别名

    好了看下效果

    实现效果演示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    实现注册功能本章完结,以下贴出完整controller 跟 mapper代码

    完成代码

    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import www.td0f7.cn.springboot.springboot.base.BaseResult;
    import www.td0f7.cn.springboot.springboot.entity.User;
    import www.td0f7.cn.springboot.springboot.mapper.UserMapper;
    
    @RestController
    @RequestMapping("user")
    public class UserController {
        @Autowired(required = false)
        private UserMapper mapper;
    
        @PostMapping("login")
        public BaseResult login(@RequestParam(value = "user", defaultValue = "") String user,
                                @RequestParam(value = "pass", defaultValue = "") String pass) {
            if (user.equals("")) return new BaseResult(400, "账号必须传!", "");
            if (pass.equals("")) return new BaseResult(400, "密码必须传!", "");
            User user1 = mapper.login(user, pass);
            if (user1 == null) return new BaseResult(500, "账号密码不正确!", "");
            user1.setPass("");
            return new BaseResult(200, "", user1);
        }
    
    
        @PostMapping
        public BaseResult register(User user) {
            if (user == null || user.getUser() == null || user.getPass() == null) return new BaseResult(400, "参数不正确", "");
    
            if (mapper.findByUser(user.getUser()) != null) return new BaseResult(500, "账号已经注册", "");
    
            if (mapper.register(user) == 0) return new BaseResult(500, "注册失败", "");
            return new BaseResult(200, "", "注册成功!");
        }
    }
    
    
    
    import org.apache.ibatis.annotations.Insert;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    import www.td0f7.cn.springboot.springboot.entity.User;
    
    @Mapper
    public interface UserMapper {
    
        @Select("select * from user where user = #{user} and pass = #{pass}")
        User login(String user, String pass);
    
        @Select("select id from user where user = #{user}")
        User findByUser(String user);
    
        @Insert("insert into user (user, pass) values (#{user}, #{pass})")
        int register(User bean);
    }
    

    相关文章

      网友评论

          本文标题:SpringBoot+MyBatis做注册接口,抛弃mapper

          本文链接:https://www.haomeiwen.com/subject/hbzjqltx.html