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

Like (1)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2021年5月25日
Next 2022年3月31日

相关推荐

  • JAVA学习路线之夯实基础

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

    2020年1月14日
    1.5K
  • Java自学之抽象类与接口

    面向对象程序设计中,类继承的主要作用的扩充已有类的功能。子类可以根据自己的需要选择是否要覆写父类中的方法,所以一个设计完善的父类是无法对子类做出任何强制性的覆写约定。为了解决这样的…

    2020年12月7日
    1.1K
  • JAVA基础知识整理

    终于下定决心2020年转JAVA开发,自学之路坎坷曲折。俗话说的话,好记性不如烂笔头。如果有小伙伴们也像我一样在JAVA自学之路上徘徊,那就关注一下我的博客网站。我会不定期更新一下…

    2020年1月11日
    1.6K
  • Spring Boot的常用注解

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

    2024年8月29日
    298
  • Java自学之String类

    在实际项目开发中,String是一个必须使用的程序类,可以说是项目的核心组成类。在Java程序里所有的字符串都要求使用【’‘】进行定义,同时也可以利用【+】实现字符串的连接处理。 …

    2020年11月30日
    1.3K
  • Java自学之反射机制

    重用性是面向对象设计的核心原则。为了进一步提升代码的重用性,Java提供了反射机制。反射技术首先考虑的是“反”与“正”的操作,所谓的“正”操作,是指当开发者使用一个类的时候,一定要…

    2020年12月24日
    1.1K
  • Java自学之异常的捕获与处理

    在程序开发中,程序的编译与运行是两个不同的阶段,编译主要针对的是语法检测,而在程序运行时却有可能出现各种各样的错误导致程序中断执行,那么这些错误在Java中统一称为异常。 异常处理…

    2020年12月11日
    1.3K
  • Java自学之内部类

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

    2020年12月14日
    1.4K
  • Spring Tools学习之JAVA开发环境搭建【windows 10】

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

    2018年12月6日
    2.8K
  • spring boot练习篇之用户登录系统【接口篇】

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

    2021年5月25日
    1.5K