SpringBoot+Mysql做登陆接口,抛弃mapper.xml

624 阅读4分钟

1.创建Springboot项目

开发工具我们采用IntelliJ IDEA,环境安装不在叙述,如果对环境搭建不会的朋友,可以评论或私聊,本人后期在写一章环境搭建,mysql安装的文章:

  1. 打开IntelliJ IDEAnew ProjectFile -> New -> Project...

  2. 选择Spring initializr,选择对应的Project SDK后点击Next,如果Project SDK没有可选项,请先安装sdk,

  3. 在这里插入图片描述 如上图所示 Group 修改为自己的报名,推荐为域名+项目名,比如www.td0f7.cn.springboot01 Artifact 为自己的项目名称,英文可以下划线比如spring_boot_demo type 为包管理方式,如果不了解这两种推荐用默认的方式即可,不用修改 Lauguage 为开发语言,默认为Java,可自行修改 Packaging 为打包方式,本人习惯用war所以选择war方式 Java Version 为开发语言的版本号,我本地java版本号是8,所以选择8 在这里插入图片描述 改动完成,点击 Next 出现第二个界面,在点击下一步

  4. 在这里插入图片描述 Project Name 是项目名称,修改成自己的即可,默认是上个界面带过来的,不用修改 Project location 为项目存储路径修改为自己的存储路径即可 点击Firish,等待加载完成

2.项目结构介绍

在这里插入图片描述 如图所示 根目录下 pom.xml 是包管理,引入一些新的jar包都在这,修改springboot版本号,修改打包方式等等 src main java 是写代码的地方 SpringBootDemoApplication 是程序主入口 resources 存储一些资源 application.properties 是配置文件,配置端口号,mysql,redis等等都在这里 static 是静态资源,js css 图片等 templates 放html界面

其他等教程用到在详细解释

3.引入mysql等包

由于新项目没有引入任何包,所以要引入数据库的包。 首先打开项目根目录的 pom.xml 在内容 dependencies 节点下添加

    <dependencies>
    	<!--新添加的-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>
				

		<!--项目自带的-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

lombok 为实体类工具包,可以自动添加get set方法 mysql 是链接mysql数据库必须添加的包 org.mybatis.spring.boot 是mysql数据库的封装框架,更简易的操作数据库 gson 是对象转json字符串的工具类

4.修改数据库配置文件

打开项目根目录 src -> main -> resources -> application.properties 文件

spring.datasource.url=jdbc:mysql://mysqlip:端口/数据库名?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
spring.datasource.username=数据库账号
spring.datasource.password=数据库密码

spring.datasource.url=jdbc:mysql://127.0.0.1/springboot?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
spring.datasource.username=springboot
spring.datasource.password=wangzhong

mysql默认端口是3306,如果没有修改过端口号,则spring.datasource.url=的端口号可以省略不写

5.创建mysql数据库user表

CREATE TABLE `springboot`.`user` ( `id` INT NOT NULL AUTO_INCREMENT , `user` VARCHAR(30) NOT NULL , `pass` VARCHAR(30) NOT NULL , PRIMARY KEY (`id`), UNIQUE `u_user` (`user`) ENGINE = MEMORY;

在mysql数据库执行这段mysql语句添加user表 id 主键自增 user 登录账号,不重复 pass 登陆密码

环境到这里就算完成了,接下来要写代码了

6.编写代码实现登陆接口

首先在 src main java 你的包SpringBootDemoApplication 同级目录下创建 mapper controller entity三个包 mapper 存储操作数据库的代码 controller 存储api的代码,前台调用的api都是这个下的 entity 存储数据库对应的实体类

首先是entity包下创建User实体类文件


import lombok.Data;

//@Data 注释会为我们自动给该实体类的属性添加 get set方法,必须引用了lombok包才可以使用
@Data
public class User {
    private int id;
    private String user;
    private String pass;
}

创建UserMapper,名称一般为数据库表名+Mapper,类型为interface

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import www.td0f7.cn.springboot01.spring_boot_demo.entity.User;

//必须有这个注解,否则无法扫描到该mapper
@Mapper
public interface UserMapper {
    /**
     * @Select 代表查询语句
     * #{user} 代表 取该方法中 user参数
     * @返回值 登陆是查询,由于user登陆账号是唯一的,所有返回类型是一个User对象而不是集合
     */
    @Select("select * from user where user = #{user} and pass = #{pass}")
    User login(String user, String pass);
}

创建UserController,给外部提供可调用的api


import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import www.td0f7.cn.springboot01.spring_boot_demo.entity.User;
import www.td0f7.cn.springboot01.spring_boot_demo.mapper.UserMapper;

@RestController//如果返回值为对象,则自动转换成json
//@RequestMapping("user"),此注释代表这个controller需要+user才可以访问,如下
//我们启动的网站都是http://localhost:8080,要访问这个controller则是http://localhost:8080/user
@RequestMapping("user")
public class UserController {
    @Autowired(required = false)//自动扫描mapper文件
    private UserMapper mapper;

    /**
     * 该接口为post方式
     *
     * @param user 参数user默认值为空,不写defaultValue为null
     * @param pass
     * @return
     */
    @PostMapping("login")
    public String login(@RequestParam(value = "user", defaultValue = "") String user,
                        @RequestParam(value = "pass", defaultValue = "") String pass) {
        if (user.equals("")) return "账号必传";
        if (pass.equals("")) return "密码必传";
        User user1 = mapper.login(user, pass);
        if (user1 == null) {//没有查询到数据,代表没有此账号
            return "账号密码不正确!";
        } else {
            return new Gson().toJson(user1);//登陆成功则给对象转json字符串返回
        }
    }
}

7.运行开始测试

数据库添加数据

INSERT INTO `user`(`user`, `pass`) VALUES ('wz', '123456')

以上添加了账号wz密码123456的数据

接下来运行项目测试

在这里插入图片描述 使用postman测试

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

ok,登陆功能完成!!! 注册功能后期发布