zoukankan      html  css  js  c++  java
  • 简单的登陆注册接口

    pom.xml

    注入要用到的依赖

    web

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    jdbc

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    mysql-connector-java

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope><!--runntime表示被依赖项目无需参与项目的编译-->
    </dependency>
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
    </dependency>
    <?xml version="1.0" encoding="UTF-8"?>
    <!--xml版本、编码-->
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!--
    xmlns -命名空间,类似包名,因为xml的标签可自定义,需要命名空间来区分
    xmlns:xsi -xml遵循的标签规范
    xsi -用来定义xmlschema的地址,也就是xml书写时需要遵循的语法,两部分组成,前面部分就是命名空间的名字,后面是xsd(xmlschema)的地址
    -->
    <modelVersion>4.0.0</modelVersion><!--描述这个POM文件是遵从哪个版本的项目描述符-->
    <groupId>com.example</groupId><!--项目组织唯一的标识符,和路径差不多-->
    <artifactId>springboot_mybatis</artifactId><!--项目的唯一的标识符,和项目的名字差不多-->
    <version>0.0.1-SNAPSHOT</version><!--项目的版本-->
    <packaging>jar</packaging> <!-- packaging: 打包的机制,如pom, jar, maven-plugin, ejb, war, ear, rar, par -->
    <name>springboot_mybatis</name><!-- 项目的名称, Maven 产生的文档用 -->
    <description>Demo project for Spring Boot</description><!-- 项目的描述, Maven 产生的文档用 -->

    <parent><!--继承父类-->
    <groupId>org.springframework.boot</groupId><!--项目组织唯一的标识符,和路径差不多-->
    <artifactId>spring-boot-starter-parent</artifactId><!--项目的唯一的标识符,和项目的名字差不多-->
    <version>2.0.0.RELEASE</version><!--项目的版本-->
    </parent>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--出入编码-->
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version><!--java版本-->
    </properties>
    <dependencies><!--依赖-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope><!--runntime表示被依赖项目无需参与项目的编译-->
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope><!--test表示依赖项目仅仅参与测试相关的工作-->
    </dependency>
    </dependencies>
    <build><!--编译设置-->
    <plugins><!--插件-->
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
    </project>

    User实体类

    package com.example.springboot_mybatis.user;
    
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class User {
    
        private int id_ = 0;
        private String username = "";
        private String password = "";
    
        public int getId_() {
            return id_;
        }
    
        public void setId_(int id_) {
            this.id_ = id_;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
    }

    UserMapper.java mybatis sql映射

    package com.example.springboot_mybatis.mapper.user;
    
    import com.example.springboot_mybatis.user.User;
    import org.apache.ibatis.annotations.*;
    import org.apache.ibatis.type.JdbcType;
    
    //使用注释配置映射的sql语句,这样可以省掉映射器xml文件
    @Mapper
    public interface UserMapper {
        
        @Select("select * from user_info where username=#{username}")
        public User getByusername(String username);
    
        /*
        id    id标识
        value 值,内值的配置
        property 变量名
        column   对应数据库列名
        javaType 变量类型
        jdbcType 对应数据字段类型
        id       是否主键
         */
        @Results(id = "1",value = {
                @Result(property = "id_",column = "id_",javaType = String.class,jdbcType = JdbcType.VARCHAR,id = true),
                @Result(property = "username",column = "username",javaType = String.class,jdbcType = JdbcType.VARCHAR),
                @Result(property = "password",column = "password",javaType = String.class,jdbcType = JdbcType.VARCHAR)
        })
        @Insert("insert into user_info(username,password) values(#{username},#{password})")
        /*
        useGeneratedKeys=true,MyBatis会使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键
        keyProperty 变量名
        keyColumn   对应数据库列名
         */
        @Options(useGeneratedKeys=true,keyColumn="id_",keyProperty="id_")//设置id自增长
        public void register(User user);
    
        @Update({"update user_info ",
                "set password = #{password}",
                "where username = #{username}"
        })
        public int update(User user);
    
        @Delete("delete from user_info where id_ = #{id_} and username = #{username}}")
        public int delete(User user);
    
    
    }

    UserService.java 实现UserMapper

    package com.example.springboot_mybatis.mapper.user;
    
    import com.example.springboot_mybatis.user.User;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    //声明Bean,声明UserService类是Spring管理的一个Bean
    @Service
    public class UserService {
    
        /*
        注入Bean,把UserMapper的实体Bean注入到UserService中
        required=false,找不到匹配Bean时也不报错
        以后用的时候就不用自己new对象,对象由spring管理
        按类型进行
         */
        @Autowired(required=false)
        private UserMapper userMapper;
    
        public User getByusername(String username){
            return userMapper.getByusername(username);
        }
    
        public void register(User user){
            userMapper.register(user);
        }
    
        public int update(User user) {
            return userMapper.update(user);
        }
    
        public int delete(User user) {
            return userMapper.delete(user);
        }
    
    }
    UserController
    @Controller
    @ResponseBody
    public class UserController {
    
        /*
        注入bean,按名称进行
        以后用的时候就不用自己new对象,对象由spring管理
         */
        @Resource
        private UserService userService;
    
        /*
        @RequestMapping注释
        定义Controller方法对应的映射url
        value 访问相对地址
        method 访问方式
         */
        @RequestMapping(value = "/login", method = RequestMethod.POST)
        public LoginRespond login(@RequestBody LoginAccept loginAccept){
            LoginRespond loginRespond = new LoginRespond();
            Login login = new Login();
            return login.login(loginAccept,loginRespond,userService);
        }
    
        @RequestMapping(value = "/register", method = RequestMethod.POST)
        public RegisterRespond register(@RequestBody RegisterAccept registerAccept){
            RegisterRespond registerRespond = new RegisterRespond();
            Register register = new Register();
            return register.register(registerAccept,registerRespond,userService);
        }
    
        @RequestMapping(value = "/update", method = RequestMethod.POST)
        public UpdateRespond updateRespond(@RequestBody UpdateAccept updateAccept){
            UpdateRespond updateRespond = new UpdateRespond();
            Update update = new Update();
            return update.update(updateAccept,updateRespond,userService);
        }
    
    
    }
    LoginAccept
    public class LoginAccept implements Accept{
    
        private String id = "";
        private User data;
    
        public User getData() {
            return data;
        }
    
        public void setData(User data) {
            this.data = data;
        }
    
        //表明该方法需要重写,方便阅读
        @Override
        public String getId() {
            return id;
        }
    
        @Override
        public void setId(String id) {
            this.id = id;
        }
    
    }
    LoginRespondData
    public class LoginRespondData {
    
        private String Islogin;
    
        public String getIslogin() {
            return Islogin;
        }
    
        public void setIslogin(String islogin) {
            Islogin = islogin;
        }
    
    }
    LoginRespond
    public class LoginRespond implements Respond{
    
        private String id = "";
        private State state;
        private LoginRespondData data;
    
        @Override
        public String getId() {
            return id;
        }
    
        @Override
        public void setId(String id) {
            this.id = id;
        }
    
        public State getState() {
            return state;
        }
    
        public void setState(State state) {
            this.state = state;
        }
    
        public LoginRespondData getData() {
            return data;
        }
    
        public void setData(LoginRespondData data) {
            this.data = data;
        }
    
    }
    Login
    public class Login {
    
        public LoginRespond login(LoginAccept loginAccept,LoginRespond loginRespond,UserService userService){
    
            loginRespond.setId(loginAccept.getId());
            State state = new State();
            LoginRespondData loginRespondData = new LoginRespondData();
            User user_accept = loginAccept.getData();
            int id_ = 0;
            String password_ = "";
            User user_sql = userService.getByusername(user_accept.getUsername());
    
            try {
                id_ = user_sql.getId_();
            }catch (NullPointerException e){
                state.setMsg("该用户不存在或密码错误");
                loginRespondData.setIslogin("N");
            }
            try {
                password_ = user_sql.getPassword();
            }catch (NullPointerException e){
                state.setMsg("该用户不存在或密码错误");
                loginRespondData.setIslogin("N");
            }
            if(password_.equals(user_accept.getPassword())){
                state.setMsg("操作成功");
                loginRespondData.setIslogin("Y");
            }else {
                state.setMsg("该用户不存在或密码错误");
                loginRespondData.setIslogin("N");
            }
            loginRespond.setState(state);
            loginRespond.setData(loginRespondData);
    
            return loginRespond;
        }
    
    }

    注册 略

  • 相关阅读:
    离职or not 离职
    RelativeLayout总结
    MVC中小试了一下Jquery
    tricks about andor in python
    【回旋数字】c语言实现
    退役?
    HDU4546 比赛难度
    WEB页面导出为EXCEL文档的方法
    开始→运行→命令
    控制Repeater显示列数
  • 原文地址:https://www.cnblogs.com/yanzhe/p/8513190.html
Copyright © 2011-2022 走看看