spring boot练习篇之用户登录系统【接入数据库】

抛弃JSP,只做纯粹的前后端分离项目。

写在前面

学习基础知识是枯燥无味的,之所以会这样,多数是因为心不静,对于如何运用它,感到茫然。所以建议大家在学习Java基础知识的时候,一定要自己写实例,这样才能理解透彻,才能知道在以后的项目中如何运用所学到的知识。

正文

接上一篇《spring boot练习篇之用户登录系统【接口篇】》,此次将要接入本地MySQL数据库。至于本地如何安装MySQL数据库,小编会单独更新一篇文章讲解。

此项目使用的Spring + MyBatis。在开始写代码前,需要将项目所需的依赖包引进来。

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.15</version>
</dependency>

接下来配好数据库连接。在application.properties文件中配置。

#数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/rpm_sql?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC 
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

首先在MySQL数据库中新建一个项目数据库【rpm_sql】,并新建一张用户表【table_users】。

use rpm_sql
create table table_users
(
    userId   int auto_increment
        primary key,
    name     varchar(255) null,
    password varchar(255) null
);

在项目中新建一个entity包,并在该包下新建一个UserEntity类。

package com.example.rpm.entity;

import lombok.Data;

@Data
public class UserEntity {
  private int userId;
  private String name;
  private String password;
}

在项目中新建一个Mapper包,并在该包下新建一个UserMapper类。

package com.example.rpm.mapper;

import com.example.rpm.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {
  @Select("SELECT * FROM table_users WHERE name = #{name}")
  UserEntity queryByName(@Param("name") String name);
}

知识点

@Mapper 是 Mybatis 的注解,和 Spring 没有关系;添加了@Mapper注解之后这个接口在编译时会生成相应的实现类;

接下来就是要将上一篇文章的项目工程完善一下。

修改业务逻辑层service的实现类UserServiceImpl。

package com.example.rpm.service;
import com.example.rpm.entity.UserEntity;
import com.example.rpm.mapper.UserMapper;
import com.example.rpm.result.ExceptionMsg;
import com.example.rpm.result.Response;
import com.example.rpm.result.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService{

  private UserMapper userMapper;

  @Autowired
  public void setUserMapper (UserMapper userMapper) {
    this.userMapper = userMapper;
  }

  @Override
  public Response login(String name,String password) {

    UserEntity userEntity = userMapper.queryByName(name);
    if(userEntity == null) {
      return new ResponseData(ExceptionMsg.FAILED);
    }
    String userDaoPassword = userEntity.getPassword();
    if (password.equals(userDaoPassword)) {
      return new ResponseData(ExceptionMsg.SUCCESS, userEntity);
    }
    return new ResponseData(ExceptionMsg.FAILED);
  }
}

到此,项目已经成功接入数据库。

总结

在纯粹的前后端分离项目中,后端服务只负责提供相应的接口。页面跳转、数据展示效果以及部分逻辑都会交给前端来完成。

在使用spring的后端服务中,数据流程大致是controller负责接收用户输入的参数【即浏览器调用接口的入参】,在controller中引入service层,调用service层的方法,数据就进入service层,在service层进行业务逻辑处理【即数据的增、删、改、查】。在进行业务逻辑处理时,是以数据库的数据为凭证的,而在使用MyBatis的项目中,执行相应的SQL语句是在Mapper层,所以要在service层中引入Mapper层中的方法,这样就可以操作数据库了。而实体层【entity】以及封装的response类只是数据的载体,哪里需要,直接在那里引入使用即可。

 

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/java/spring-boot-login-mysql.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2021年5月25日
下一篇 2022年3月31日

相关推荐

  • spring4.x学习之用户登录与注册

    在之前的文章中我已经把后端工程项目创建好了,接下来就是编写项目了。 首先,我先创建一个数据库。数据库使用的是MySQL,数据库管理工具用的是Navicat。 打开数据库管理工具Na…

    2019年3月21日
    2.1K
  • spring boot练习篇之用户登录系统【接口篇】

    写在前面 抛弃JSP,只做纯粹的前后端分离项目。 作为一个资深前端工作者,想要转JavaWeb开发,无论是书籍,还是网上视频、资料,竟然没有一篇能清楚明白地讲解怎样搭建一个前后端分…

    2021年5月25日
    1.7K
  • Java自学之内部类

    内部类是一种常见的嵌套结构,利用这样的结构使得内部类可以与外部类共存,并且方便地进行私有操作的访问。 内部类基本概念 内部类(内部定义普通类、抽象类、接口的统称)是指一种嵌套的结构…

    2020年12月14日
    1.5K
  • JAVA学习路线之夯实基础

    第一章 开发环境 JDK(Java SE Development Kit),Java标准版开发包,提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环…

    2020年1月14日
    1.7K
  • Java自学之类与对象

    定义 类是由成员属性和方法组成。成员属性主要定义类的一个具体信息,实际上一个成员属性就是一个变量,而方法是一些操作的行为。类的定义基础语法如下。 一个类定义完成后并不能够被直接使用…

    2020年11月25日
    1.3K
  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    415
  • JAVA学习之多线程知识点整理

    1、什么是进程?什么是线程? 进程是一个应用程序。线程是一个进程中的执行场景或者执行单元。一个进程可以启动多个线程。进程之间内存独立不共享。同一个进程中的线程之间,堆内存和方法区内…

    2020年6月19日
    1.3K
  • Java自学之继承

    在面向对象的设计过程中,类是基本的逻辑单位。但是对于这些基本的逻辑单位需要考虑到重用的设计问题,所以在面向对象的设计里提供有继承,并利用这一特点实现类的可重用性定义。 类继承定义 …

    2020年12月3日
    1.4K
  • JavaWeb入门案例之用户注册

    前言 之前把Java的基础知识系统的过了一遍,目前总算可以看懂Java代码了,接下来就是要学习Java开发框架(主要是springMVC)。 下面用一个用户注册的小案例,来总结一下…

    2021年1月13日
    1.7K
  • Spring Tools学习之JAVA开发环境搭建【windows 10】

    一直以来都想学习JAVA,但是苦于找不到门路,网上学习资料要不看不懂,要不需要金钱。 终于,迫于生活与年龄的压力,下定决心,学习JAVA。 写下此文档,记录一下自己学习JAVA之路…

    2018年12月6日
    2.9K