简单的登陆注册接口

 

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;
    }

}

 

注册 略

 

posted on 2018-03-06 11:02  研者  阅读(521)  评论(0编辑  收藏  举报